expect腳本中設定超時,比如下面的腳本
檔案expect_ssh_scp.sh
#!/usr/bin/expect #表示使用expect解釋器
set timeout 10 #設定超時限制為10秒
spawn ssh userName@hremote_host command #通過ssh連接遠程主機執行命令
expect { #第一個expect陳述句
"(yes/no)" {send "yes\r";exp_continue}
"*assword:" {send "password\r"}
}
expect eof #指明命令互動結束
spawn scp source userName@hostName:dest #通過scp復制遠程電腦的檔案到本地
expect { #第二個expect陳述句
"(yes/no)" {send "yes\r";exp_continue}
"*assword:" {send "password\r"}
}
expect 100%
expect eof
exit
我想知道這個超時10秒,是對所有的expect陳述句有效,還是只針對第一個啊?
如果超時限制對下面所有的expect陳述句都有效,比如下面的scp遠程復制命令,如果資料沒傳輸完,程式就超時了,那怎么解決呢?
那樣的話expect 100%這句代碼又有什么作用??
我看到一種解釋是:代碼剛開始設定了timeout的時間為10秒,如果在執行scp任務時遇到了代碼中沒有指定的例外,則在等待10秒后該腳本的執行會自動終止。這樣理解對嗎?
干嘛要這個超時限制啊,感覺很影響程式的效率,在執行程序中遇見問題就回傳問題資訊,退出不就好了么,就算多給10秒,還不是沒法解決。就好比Java中的例外處理機制,遇見例外就,throw catch處理嘛,然后程式繼續執行,這樣多好,
如果某一個方法非常耗時,那么就等它執行完唄,就算有一天,出現無限回圈這種永遠的執行不完的方法,設定一個超時,這樣的邏輯感覺不對吧,出現無窮回圈的問題明顯是設計的問題
uj5u.com熱心網友回復:
有沒有知道的朋友,講解一下啊,謝謝uj5u.com熱心網友回復:
https://blog.csdn.net/beibei0921/article/details/45370363轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/117495.html
標籤:系統維護與使用區
