在編寫一些腳本時,有時候需要與計算機進行交互,比如ssh連接時輸入密碼,fdisk命令進行分區。這時候expect工具的強大和好用就體現出來了。
使用expect工具前,先檢查是否安裝了expect包,安裝之後默認在/usr/bin/expect
#!/usr/bin/expect #這個是使用expect工具的環境
set timeout +數字 #設置超時時間,單位是秒
set 變量名 變量值
set 變量名 [linedex $argv 0 ] #意思是這個變量值從你執行腳本的後面第一個參數獲得
#argv 1 是第二個參數獲得,一次類推到9,如果是第十 # 一個參數用 argv {10}
比如 ./test.sh 10 #10 就是argv 0
spawn commd #表示啓動一個名爲“commd”的命令,並由expect監控
expect "***" #匹配某個爲“***”字符
send "**\r" #如果匹配到,傳入**參數
interact #交給控制檯控制
expect eof #表示子程序的結束,如果交給控制檯控制,可以不加
處於初學shell腳本階段,這是一次小結。
附一段自己寫的分區腳本
#!/usr/bin/expect
set dev [lindex $argv 0]
set num [lindex $argv 1]
spawn fdisk $dev
expect "help):"
send "n\r"
expect "p):"
send "p\r"
expect "):"
send "$num\r"
expect "):"
send "\r"
expect "):"
send "+500M\r"
expect "help):"
send "p\r"
expect "help):"
send "wq\r"
interact