expect是乙個用來實現自動互動功能的軟體套件。
使用expect可以模擬手工互動的過程,實現自動與遠端程式的互動。例如當執行ssh命令連線伺服器時,需要手動輸入密碼,如果採用expect,就可以自動互動,無需再人工手動輸入密碼了。
ubuntu系統,執行以下命令安裝
apt install expect檢視安裝軟體
apt show expectspawn命令是expect程式實現自動互動的前提(第一步)
spawn執行乙個命令或程式,之後的所有expect操作都會在這個執行過的命令或程式程序中進行。
spawn [需自動互動的命令或程式]
spawn ssh [email protected]第一步使用spawn命令執行命令或程式之後,會提示某些互動式資訊,expect命令作用就是對這些互動式資訊進行篩選匹配,一旦匹配成功,就執行動作。
expect 表示式 [動作]
spawn ssh [email protected]「*」號表示萬用字元,一旦互動式資訊**現 *password,就輸入資訊123456,\n表示換行expect 「*password」
可以實現在乙個expect匹配中進行多次不同的字串匹配,根據不同的字串執行不同的處理動作
#!/usr/bin/expect --->指定expect解析器
spawn ssh [email protected] uptime
expect --->如果匹配到yes/no,則輸入yes;還需要繼續進行匹配,則加上exp_continue,達到多次匹配的效果
"password"
}expect eof --->結束expect
send和exp_send作用類似
用來執行動作,與exp_send命令類似
相當於shell中echo命令,用來列印資訊
set 變數名 變數值
puts $變數名 --> 方法1send_user " $變數名" --> 方法2
執行結果如下:
expect中也有類似於shell指令碼裡$1,$2等類似的特殊參量變數,用於接收及控制expect指令碼傳參。
使用$ar**表示引數資料,[lindex $ar** n]接收expect指令碼傳參,n從0開始,表示第乙個引數
expect 的小點 expect的使用
expect password send 123456 r 注意 expect 和字串 password 中間有乙個空格,send和字串 123456 r 中間有乙個空格。因為expect和send都是乙個命令,只有加空格才能與引數分開。expect 注意 expect與 之間有乙個空格,因為這樣e...
expect命令使用
expect 是由don libes基於tcl tool command language 語言開發的,主要應用於自動化互動式操作的場景,借助expect處理互動的命令,可以將互動過程如 ssh登入,ftp登入等寫在乙個指令碼上,使之自動化完成。尤其適用於需要對多台伺服器執行相同操作的環境中,可以大...
expect 使用例項
shell指令碼實現ssh自動登入遠端伺服器示例 usr bin expect spawn ssh root 192.168.22.194 expect password send 123 r expect interact expect是乙個用來處理互動的命令。借助expect,我們可以將互動過程...