我有一個基於文本的菜單運行在遠程Linux主機上。我正在使用期望ssh到這個主機,並想弄清楚如何與菜單進行交互。交互涉及向上,向下箭頭鍵和使用回車鍵。例如,如何自動化測試基於文本的菜單
Disconnect
Data Collection >
Utilities >
Save Changes
當您進入系統Disconnect突出顯示。所以只需按兩次輸入即可斷開與系統的連接。第二個確認斷開。
下面的代碼將SSH入我的系統,並調出菜單。如果我刪除期望的eof並嘗試發送「\ r」以爲這會選擇Disconnect菜單選項,則會出現以下錯誤:「write()未能寫入任何內容 - 將會睡眠(1)並重試...」
#!/usr/bin/expect
set env(TERM) vt100
set password abc123
set ipaddr 162.116.11.100
set timeout -1
match_max -d 100000
spawn ssh [email protected]$ipaddr
exp_internal 1
expect "*password:*"
send -- "$password\r"
expect "Last login: *\r"
expect eof
我已經看過virterm和term_expect的例子,但無法弄清楚如何調整它們爲我工作。如果有人能指出我正確的方向,我將不勝感激。我需要知道的是,我可以與基於文本的菜單系統進行交互,以及執行此操作的正確方法是什麼,如果存在任何示例,示例會很棒。
感謝, -reagan
你在什麼操作系統下運行這個代碼? – bta 2010-04-23 20:31:44
你嘗試過產生一個shell而不是ssh。然後通過發送'ssh \ r'命令等來調用ssh。這就是我爲控制我的項目的集成測試的tmux所做的事情 – arainone 2016-03-20 00:50:08