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