我正在嘗試使用expect實用程序來自動化腳本執行期間需要輸入密碼的任務。期望腳本條件方案
expect -c "set timeout 120;
spawn /bin/bash /home/user/script.sh;
# Expect 1 - not expected always
expect \"Are you sure you want to continue connecting (yes/no)?\"; send "yes\r";
# Expect 2 - not expected always
expect \"Please type 'yes' or 'no':\"; send \"yes\r\";
# Expect 3 - this is required always to input the password
expect \"[email protected]'s password:\"; send \"password\r\"; expect eof"
從上面的腳本中,期望1和2條件並不總是必需的。它僅在對新服務器執行腳本時需要。一旦主機的身份被添加到已知主機,腳本就不會提示前2個預期條件。期望3是大多數情況下要滿足的唯一條件。
在一個系統中,主機標識已經存在,期望腳本執行第一個條件並保持到達到超時並且不會期望3.我不知道如何實現這個,但是在那裏如果沒有達到提示,這種方法可能會中斷。
http://stackoverflow.com/q/1538444/1005215 –
期望不是bash的一部分,它不是特定於bash,它不隨bash一起發運,它甚至不使用bash引擎它基於的語言是TCL)。你可以在沒有安裝bash的情況下運行expect腳本。 bash標籤在特定問題中沒有地位。 –
謝謝,期望命令本身不是根據腳本bash。我想要執行的script.sh是一個bash腳本,但是這就是爲什麼我要調用bash可執行文件 – user6930