本文主要包括兩個部分:expect命令的使用示例和對該示例進行說明。
站在用戶的角度思考問題,與客戶深入溝通,找到崆峒網(wǎng)站設(shè)計與崆峒網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋崆峒地區(qū)。
1. expect命令的使用示例
IP=192.168.1.18 PASS=passwd expect -c " settimeout 60; spawn ssh root@192.168.0.1 expect{ \"*yes/no*\"{send \"yes\r\"; exp_continue} \"*password*\"{send \"$PASS\r\";} } expect eof"
2. 針對示例,對expect命令的使用進行說明
(1) -c標志之后的命令在任何腳本之前執(zhí)行,該命令應(yīng)當被引用以防止被 shell破壞。
(2) set timeout 60:設(shè)置超時時間,計時單位為秒,timeout -1為永不超時。
(3) spawn是expect的初始命令,用于啟動一個進程,之后所有的expect操作都在這個進程中進行,如果沒有spawn語句,整個expect就無法進行下去,當然,如果真的不要spawn過程也沒有關(guān)系,雖然這樣就沒有辦法單獨執(zhí)行,但是這個腳本可以與任何調(diào)用它的進程進行交互。
(4) expect用于等候一個相匹配的輸出,一旦匹配就執(zhí)行后面的動作。在這個例子中,expect是依附于spawn命令的,當spawn后面的命令執(zhí)行完畢后,expect命令就匹配命令執(zhí)行后的關(guān)鍵詞(yes/no),如果匹配到,就執(zhí)行后面{ }中動作。
(5) expect的匹配可以看做是一個循環(huán),通常匹配之后都會退出語句,但如果有exp_continue,則可以不斷循環(huán)匹配。在該例子中,遇到“yes/no”時,送出“yes”,然后繼續(xù)expect,遇到密碼提示時,送出密碼,送完后退出。
(6) eof是必須去匹配的,在 spawn進程結(jié)束后會向 expect發(fā)送 eof;如果不去匹配,有時也能運行,比如 sleep多少秒后再去 spawn下一個命令,但是不要依賴這種行為,很有可能今天還可以,明天就不能用了。但是,如果不需要spawn的進程結(jié)束,不能 expect eof了,如下面的例子:
#!/usr/bin/expect set timeout 30 spawn ssh 10.192.224.224 expect"password:" send"mypassword\n" expect "*$" send "mkdirtmpdir\n" expect"*$"
手動操作時 ssh實際上也不會自己結(jié)束除非你 exit;所以你只能expect bash的提示符,當然也可以是機器名等,這樣才可以在遠程創(chuàng)建一個目錄。
網(wǎng)頁標題:shell學習之expect命令
瀏覽地址:http://aaarwkj.com/article4/goocie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、外貿(mào)建站、做網(wǎng)站、網(wǎng)站改版、微信公眾號、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)