|
Expect中的特殊關(guān)鍵字用于匹配過(guò)程,代表某些特殊含義或狀態(tài),一般用于 expect 族命令中而不能在外面單獨(dú)使用,也可以理解為事件,使用上類似于: expect eof { } 一、eof eof(end-of-file)關(guān)鍵字用于匹配結(jié)束符,比如文件的結(jié)束符、FTP 傳輸停止等情況,在這個(gè)關(guān)鍵字后跟上動(dòng)作來(lái)做進(jìn)一步的控制,特別是 FTP 交互操作方面,它的作用很大。用一個(gè)例子來(lái)看看: swawn ftp anonymous@10.11.15.105.110 expect { “password:” {exp_send “who am i”} eof {ftp connect close} } interact {} 二、timeout timeout是expect中的一個(gè)重要變量,它是一個(gè)全局性的時(shí)間控制開(kāi)關(guān),你可以通過(guò)為這個(gè)變量賦值來(lái)規(guī)定整個(gè)expect操作的時(shí)間,注意這個(gè)變量時(shí)服務(wù)于expect全局的,它不會(huì)糾纏于某一條命令,即時(shí)命令沒(méi)有任何錯(cuò)誤,到事件仍然會(huì)被集火這個(gè)變量,但這個(gè)時(shí)間達(dá)到以后除了激活一個(gè)開(kāi)關(guān)之外不會(huì)做其他的事情,如何處理是腳本編寫(xiě)人員的事情,看看它的實(shí)際使用方法: set timeout 60 spawn ssh root@172.16.1.31 expect “password:” {send “word\r”} expect timeout {puts “exoect wai timeout”; return} 上面的處理中,首先將timeout設(shè)置為60秒,當(dāng)出現(xiàn)問(wèn)題的時(shí)候程序可能會(huì)停止下來(lái),只要到60秒,就會(huì)激活下面的timeout動(dòng)作,這里我打印一個(gè)信息并停止了腳本的運(yùn)行。(例子是打印信息并且停止了腳本的運(yùn)行,這里可以根據(jù)自己的需求或思路,規(guī)定相關(guān)動(dòng)作) 在另一種expect格式中,我們還有一種設(shè)置timeout變量的方法,看看下面的例子: spawn ssh root@172.16.1.31 expect { -timeout 60 -re “password:” {exp_send “word\r”} -re “Topsecos#” { } timeout {puts “Expect was timeout”; return} } 在expect命令中間加上一個(gè)小橫杠,也可以設(shè)置timeout變量 timeout變量中,設(shè)置為0表示立即超時(shí),-1則表示永不超時(shí) expect { -timeout 20 “yes/no” {send “yes\r”; exp_continue} “password” {send “$password\r”} timeout {puts “expect connect timeout,pls contact oldboy.”; return} } |
|
|