expect 是由don libes基於tcl(tool command language)語言開發的,主要應用於自動化互動式操作的場景,借助expect處理互動的命令,可以將互動過程如:ssh登入,ftp登入等寫在乙個指令碼上,使之自動化完成。尤其適用於需要對多台伺服器執行相同操作的環境中,可以大大提高系統管理人員的工作效率
expect命令選項expect 語法:
expect [選項] [ -c cmds] [ [ -[f|b] ] cmdfile] [ args]
-c:從命令列執行expect指令碼,預設expect是互動地執行的
示例:expect -c 『expect 「\n」
-d:可以輸出輸出除錯資訊
示例:expect -d ssh.exp
expect中相關命令
spawn:啟動新的程序
send:用於向程序傳送字串
expect:從程序接收字串
interact:允許使用者互動
exp_continue匹配多個字串在執行動作後加此命令
expect最常用的語法(tcl語言:模式-動作)
單一分支模式語法:匹配到hi後,會輸出「you said hi」,並換行expect 「hi」
多分支模式語法:匹配hi,hello,bye任意字串時,執行相應輸出。等同如下:expect 「hi」 \
「hehe」 \
「bye」
expect
"hehe"
"bye"
}
以下是在expect在shell指令碼中呼叫常用的幾個用法,自動拷貝指令碼,下發指令碼,ssh 和telnet 連線遠端主機.expect可以實際靜默的操作,這個在指令碼中經常用到,讀者根據對應的功能,拷貝相關**,可以直接把變數換成固定的值,不需要每次執行指令碼都需要人工輸入變數值,實現靜默操作。
本文參考
expect 的小點 expect的使用
expect password send 123456 r 注意 expect 和字串 password 中間有乙個空格,send和字串 123456 r 中間有乙個空格。因為expect和send都是乙個命令,只有加空格才能與引數分開。expect 注意 expect與 之間有乙個空格,因為這樣e...
expect 使用例項
shell指令碼實現ssh自動登入遠端伺服器示例 usr bin expect spawn ssh root 192.168.22.194 expect password send 123 r expect interact expect是乙個用來處理互動的命令。借助expect,我們可以將互動過程...
Expect基礎使用
expect是乙個用來實現自動互動功能的軟體套件。使用expect可以模擬手工互動的過程,實現自動與遠端程式的互動。例如當執行ssh命令連線伺服器時,需要手動輸入密碼,如果採用expect,就可以自動互動,無需再人工手動輸入密碼了。ubuntu系統,執行以下命令安裝 apt install expe...