Expect中的timeout設定

來源:互聯網
上載者:User
expect自動化工具非常有用,不過這次在使用autossh指令碼的時候,發現了一個timeout設定的問題。 

expect指令碼我們都知道,首先spawn我們要執行的命令,然後就給出一堆expect的螢幕輸出,如果輸出match了我們的expect的東西,我們就會send一個命令上去,類比使用者輸入。 

但是expect中等待命令的輸出資訊是有一個timeout的設定的,預設是10秒。這個特性是防止那些執行死機的命令的。一旦到了這個timeout,還是沒有螢幕輸出的話,expect指令碼中下面的代碼就會執行。或者我們在expect指令碼中如果定義了timeout的響應代碼的話,這些代碼就會被執行。 

OK,這次執行autossh的時候,由於兩台機器還沒有配置hosts表,所以ssh的時候非常的慢,在等待password這個關鍵字的時候,超過了10秒,於是我們的指令碼就提前把password送入輸入資料流了,結果導致expect指令碼執行失敗。 

解決這樣的問題非常簡單,最簡單的辦法就是在expect指令碼的開頭定義: 

set timeout -1 -- 沒有timeout 
set timeout XX -- 設定具體的timeout時間(秒) 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.