我編寫了一個Expect腳本,該腳本登錄到遠程系統,按順序執行一些命令並在日誌文件中捕獲輸出。通過預期發送兩次命令
除了事實上,一切正在發生,當我檢查日誌文件時,一些命令似乎被髮送兩次,以致下一個要發送的命令出現在前一個命令的輸出中間。它也會在檢測到提示時再次發送(這是正確的執行)。而且,這個問題不會發生在所有情況下,這更令人困惑。
我想補充一點,我已經定製了包含這個「--->」的提示。這是爲了更容易由另一個腳本輸出解析。
這裏的期望碼,
set prompt "(]|%|#|>|\\$)"
# go to bash shell
expect -re $prompt
send "/bin/bash\r"
# customize the prompt
expect -re $prompt
send "PS1=\"\\[email protected]\\H ---> \"\r"
# set new prompt into variable
expect -re $prompt
set newPrompt " ---> "
# opens file containing command list
set commFile [open commands.txt]
# reads each line containing commands from file, stores it in "$theLine" variable and sends it.
while {[gets $commFile theLine] >= 0} {
expect "$newPrompt"
send "$theLine\r"
}
close $commFile
這是我輸出的顯示方式。
"prompt --->" command1
----output----
----output----
command2
----output----
----output----
"prompt --->" command2
----output----
----output----
希望你有想法。
我不明白這種行爲,也不能在其他地方找到任何解決方案。有任何想法嗎?
顯示更多代碼請 – 2013-03-05 16:00:20
完成,請檢查出來,謝謝。 – 2013-03-06 07:06:34