怎么在Linux中使用expect命令編寫一個(gè)自動(dòng)化交互腳本?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都網(wǎng)站制作、做網(wǎng)站的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒(méi)有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)一個(gè)展示的機(jī)會(huì)來(lái)證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來(lái)新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。expect 是建立在工具控制語(yǔ)言(Tool Control Language,TCL)之上的一個(gè)工具,它允許你通過(guò)編寫程序來(lái)對(duì)一些日常繁瑣的任務(wù)進(jìn)行有交互界面的自動(dòng)化操作。在 expect 上下文環(huán)境,你可以使用一些額外的只適用于 expect 上下文環(huán)境的命令,如 spawn、send、interact 等命令。
expect 預(yù)期的終端輸出
這里預(yù)期的輸出從左往右只要存在匹配即可。它相當(dāng)于 Python 的 search()
函數(shù),而非match()
函數(shù)。舉個(gè)例子你就明白了。
想要登陸到 root 權(quán)限,首先觀察在普通交互模式下的效果。
在獲悉返回字符串的模式后,你可以這樣寫expect Password
,也可以這樣寫Password:
,甚至可以寫成assw
,它們對(duì)于expect
命令而言都是一樣的。
下面的腳本用來(lái)開(kāi)啟一個(gè)遠(yuǎn)程 ssh 會(huì)話。
#!/usr/bin/expect spawn ssh user@ip_addr send "password\r" interact
如果想要保存并調(diào)用一些變量,你可以使用set
參數(shù)進(jìn)行設(shè)置。
公式 set 變量名 [lindex $argv 數(shù)字] 實(shí)例 set port [lindex $argv 1]
之前的 ssh 登陸腳本如果加上變量會(huì)變成下面這樣。大約需要 10 秒的加載時(shí)間。
#!/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
關(guān)于怎么在Linux中使用expect命令編寫一個(gè)自動(dòng)化交互腳本問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。