Expect基礎使用

2021-10-08 14:23:39 字數 1633 閱讀 9555

expect是乙個用來實現自動互動功能的軟體套件。

使用expect可以模擬手工互動的過程,實現自動與遠端程式的互動。例如當執行ssh命令連線伺服器時,需要手動輸入密碼,如果採用expect,就可以自動互動,無需再人工手動輸入密碼了。

ubuntu系統,執行以下命令安裝

apt install expect

檢視安裝軟體

apt show expect

spawn命令是expect程式實現自動互動的前提(第一步)

spawn執行乙個命令或程式,之後的所有expect操作都會在這個執行過的命令或程式程序中進行。

spawn [需自動互動的命令或程式]

spawn ssh [email protected]

第一步使用spawn命令執行命令或程式之後,會提示某些互動式資訊,expect命令作用就是對這些互動式資訊進行篩選匹配,一旦匹配成功,就執行動作。

expect 表示式 [動作]

spawn ssh [email protected]

expect 「*password」

「*」號表示萬用字元,一旦互動式資訊**現 *password,就輸入資訊123456,\n表示換行

可以實現在乙個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 $變數名 --> 方法1

send_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,我們可以將互動過程...