Linux下使用expect命令編寫自動化交互腳本
expect 是建立在工具控制語言(Tool Control Language,TCL)之上的一個工具,它允許你通過編寫程序來對一些日常繁瑣的任務(wù)進(jìn)行有交互界面的自動化操作。在 expect 上下文環(huán)境,你可以使用一些額外的只適用于 expect 上下文環(huán)境的命令,如 spawn、send、interact 等命令。
expect 預(yù)期的終端輸出
這里預(yù)期的輸出從左往右只要存在匹配即可。它相當(dāng)于 Python 的 search()
函數(shù),而非 match()
函數(shù)。舉個例子你就明白了。
想要登陸到 root 權(quán)限,首先觀察在普通交互模式下的效果。
在獲悉返回字符串的模式后,你可以這樣寫 expect Password
,也可以這樣寫 Password:
,甚至可以寫成 assw
,它們對于 expect
命令而言都是一樣的。
下面的腳本用來開啟一個遠(yuǎn)程 ssh 會話。
#!/usr/bin/expect spawn ssh user@ip_addr send "password\r" interact
如果想要保存并調(diào)用一些變量,你可以使用 set
參數(shù)進(jìn)行設(shè)置。
公式 set 變量名 [lindex $argv 數(shù)字] 實例 set port [lindex $argv 1]
之前的 ssh 登陸腳本如果加上變量會變成下面這樣。大約需要 10 秒的加載時間。
#!/usr/bin/expect set ip [lindex $argv 0] set user [lindex $argv 1] set password [lindex $argv 2] spawn ssh "$user\@$ip" expect "Password:" send "$password\r"; interact
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
shell腳本結(jié)合iptables防端口掃描的實現(xiàn)
這篇文章主要介紹了shell腳本結(jié)合iptables防端口掃描的實現(xiàn),中間使用了inotify-tools工具,需要的朋友可以參考下2014-05-05Linux Shell腳本語句執(zhí)行失敗,后續(xù)語句繼續(xù)執(zhí)行的問題及解決
這篇文章主要介紹了Linux Shell腳本語句執(zhí)行失敗,后續(xù)語句繼續(xù)執(zhí)行的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06CentOS中使用Shell腳本實現(xiàn)每天自動備份網(wǎng)站文件和數(shù)據(jù)庫并上傳到FTP中
這篇文章主要介紹了CentOS中使用Shell腳本實現(xiàn)每天自動備份網(wǎng)站文件和數(shù)據(jù)庫并上傳到FTP中,本文腳本比較實用,其它Linux系統(tǒng)也可參考,需要的朋友可以參考下2014-12-12