1. 程式人生 > >linux 下使用expect編寫shell 指令碼互動訪問遠端伺服器

linux 下使用expect編寫shell 指令碼互動訪問遠端伺服器

使用命令列登陸遠端伺服器一般需要ip地址以及登陸密碼等,每次都手動輸很不方便,expect可以滿足自動輸入密碼。下面是詳細的介紹:

首先安裝expect:

我用的是ubuntu14.04,使用sudo apt-get install expect即可安裝

然後使用which expect 來檢視expert的路徑,我的路徑是/usr/bin/expect

然後編寫指令碼:

198.175.102.32:10000 為例,賬號為Team002,密碼為××××××

使用vim connect.sh 新建指令碼

下面是shell指令碼的程式碼:

#!/usr/bin/expect
set timeout 30 spawn ssh [email protected]198.175.102.32 -p 10000 expect "password:" send "××××××\r" interact

然後修改許可權:

儲存退出,使用sudo chmod +x connect.sh 將connect.sh檔案變為可執行檔案>

下面執行指令碼:

使用./connect.sh即可執行,執行結果見下圖:

這裡寫圖片描述

可以看到,這裡自動連線伺服器並輸入密碼,登陸成功

最後是程式碼的介紹

第一行#!/usr/bin/expect中的/usr/bin/expect

which expect之後的路徑

第二行set timeout 30是設定第四行等待時間最長為30s

第三行spawn ssh [email protected] -p 10000是使用spawn來執行ssh [email protected] -p 10000這條命令,其中Team002是賬號,198.175.102.32為IP地址,10000為埠號

第四行expect "password:"是等待終端輸出中的字串中是否包含password:,如果包含,執行下一行,否則等待超過第二行設定的30s之後繼續執行下一行

第五行send "××××××\r"用來實現自動輸入密碼,示例密碼為xxxxxx

最後一行interactr"的作用是執行完成後保持互動狀態,把控制權交給控制檯,這個時候就可以手工操作了。

相關推薦

linux 使用expect編寫shell 指令碼互動訪問遠端伺服器

使用命令列登陸遠端伺服器一般需要ip地址以及登陸密碼等,每次都手動輸很不方便,expect可以滿足自動輸入密碼。下面是詳細的介紹: 首先安裝expect: 我用的是ubuntu14.04,使用sudo apt-get install expect即

linux如何編寫shell指令碼_2012-12-21

           因為我的同事cwl有事情請假兩天,所以需要我直接和lenovo進行交涉,我需要些一個簡單的測試程式,這裡用到了編寫shell指令碼,實現兩個c程式的編譯。我對shell指令碼的認識,除了執行過同事寫的shell 指令碼外,其他一無所知,為了讓自己強大

Linuxvim編寫python指令碼一鍵執行

在Linux下,常常使用vim來編寫指令碼,但是每次編寫完成後要退出再執行:python xxx.py才可以測試指令碼,可在vim的配置檔案中新增一些配置,即可編寫完指令碼後不用退出即可驗證指令碼的正確性(一鍵執行)。 vim編輯器的配置檔案為:/etc/vimrc

Linux 中高效編寫 Shell 指令碼的 10 個技巧

Shell 指令碼程式設計 是你在 Linux 下學習或練習程式設計的最簡單的方式。尤其對 系統管理員要處理著自動化任務,且要開發新的簡單的實用程式或工具等(這裡只是僅舉幾例)更是必備技能。 本文中,我們將分享 10 個寫出高效可靠的 bash 指令碼的實用技巧,它們包括: 1、 指令碼中多寫註釋

linux RMAN備份shell指令碼

       RMAN備份對於Oracle資料庫的備份與恢復簡單易用,成本低廉。對於使用非catalog方式而言,將RMAN指令碼嵌入到shell指令碼,然後再通過crontab來實現中小型資料庫資料庫備份無疑是首選。本文提供了一個簡單易用的基於linux shell下的RM

linux效能監控shell指令碼實現系列一(伺服器整體效能監控)

在實現監控指令碼前,我們先了解下一些已經成型的監控程式,比如大名鼎鼎的nmon。 nmon官網 http://nmon.sourceforge.net/pmwiki.php nmon使用簡單說明 http://www.ibm.com/developerworks/cn/ai

嵌入式linux入門之編寫shell指令碼應注意的事項

對於任何想適當精通一些系統管理知識的人來說,掌握Shell指令碼知識都是基本的,學習如何編寫Shell指令碼並不是一件困難的事,因為指令碼可以分為很小的塊,並且相對於Shell特性的操作和選項部分,我們只需要學習一小部分就可以了。Shell語法簡單並且直觀,編寫指令碼很像是在命令列上把相關命令和工具連線起來,

LINUX如何寫SHELL指令碼

至於SHELL的概念,什麼是SHELL我就不多說了,網上很多,我倒覺得具體怎麼寫,我沒發現,我把我寫的過程告訴大家:  1:建立一個檔案 touch wt 2:編輯檔案內容,寫入程式碼 #!/bin/sh echo "hello world!" 備註: 第一行是必須的,制定執

Jenkins使用shell指令碼部署到遠端伺服器步驟

首先需要去 系統管理->管理外掛,選擇可選外掛選項卡,搜尋並找到 SSH Slaves plugin 外掛,點選下載安裝 安裝完成後也許需要重啟Jenkins 然後你可以在系統管理中找到剛安裝完成的功能: 輸入主機IP,埠號,使用者名稱及密碼就可以

shell指令碼批量獲取遠端伺服器多個專案的日誌

shell批量獲取日誌 最近日誌比較多, 而且壓縮了日誌, 並沒有上ELK. 臨時需要來獲取專案的執行日誌, 並且解壓呈現出來. ***1. 需求環境 apache/nginx 並且指定一個本地伺服器的log服務作為web服務對外的路徑. 這裡我用的本

shell指令碼實現連線遠端伺服器(ECS)

本篇文章主要使用expect指令碼來實現自動連線遠端伺服器並實現互動,不會大篇幅介紹expect的用法,有興趣的讀者可以自己瞭解,expect是個很強大的實現自動化互動的工具哦~~ 程式碼示

Linux系統編寫shell指令碼傳入引數列印系統當前執行緒數到指定檔案

  最近在做效能測試,要檢視系統執行過程中執行緒數,很簡單輸入命令:netstat -anp |grep java |wc -l,可以查詢。但是如何在執行過程定時列印系統執行緒數且將結果輸出到指定檔案呢?也很簡單我們直接寫一個shell指令碼執行下就可以了。以

Linux expect 指令碼語言中互動處理常用命令

Linux 下 expect 指令碼語言中互動處理常用命令 Linux 下 expect 指令碼語言中互動處理常用命令 1. #!/usr/bin/expect 告訴作業系統腳本里的程式碼使用那一個 shell 來執行。這裡的 expect 其實和 Linux 下的 bash、win

windows編寫shell指令碼放到linux執行問題

在windwos下用記事本編寫了個shell指令碼,拿到cygwin下執行沒問題,但是拿到linux下執行就出問題,顯示: :bad interpreter:no such file or directory 出現問題的原因就是“行終束符”,unix/linux使用 換行符;而dos/windows使用 回

linux怎麼編寫指令碼讓虛擬機器自動安裝系統和安裝軟體

1.我們需要手動配置好ckf檔案 cfk檔案是儲存了安裝虛擬機器的設定 用同樣的cfk檔案會安裝出一模一樣的虛擬機器 設定好yum源 mkdir /var/www/html/1建立一個共享的資料夾 mount /dev/loop0p1 /var/www/html/iso修

expect實現shell指令碼的自動互動

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux:高效編寫shell指令碼的10個建議

轉載地址: https://mp.weixin.qq.com/s/YmROxFBkfMxuh_VaaI4wtg   【Linux命令】 linux下高效編寫shell指令碼的10個建議   在Linux環境下工作 ,shell指令碼的編寫應該是一個必備的基本技能了

ubuntu編寫shell指令碼並在桌面上設定快捷方式

1、sudo gedit realsense.sh #! /bin/bash realsense-viewer 2、pwd /home/suns/Workspace/zz/   '''輸出sh檔案所在的資料夾''' 3、go to  /usr/share/a

windows 生成的shell指令碼linux執行

由於部分命令不支援win系統環境,為了折衷,將部分程式碼在win系統下執行生成資料檔案以及shell指令碼,然後將其上傳到ubuntu10.04上執行指令碼處理。          但是當將shell指令碼上傳到ubuntu後,執行起來就出現了錯誤,不能得到正確的中間資料檔

編寫shell指令碼Linux上無法正常執行

用Windows版的notepad++編寫的指令碼怎麼都無法在Linux上執行,後來才發現是因為沒有轉換成Unix格式,所以Linux上對於空格跟回車識別不了, 解決: 在notepad++右下角window那個地方右鍵(也可以在頂部選單欄尋找),選擇Unix格式再傳到L