Linux
期望腳本支持兩個預期字元
我想通過期望在 Linux 和 Solaris 機器上執行 sshd restart (我的期望在我的 ksh 腳本中執行)
我創建了期望腳本,所以當期望看到提示“#”然後他執行 sshd restart
但問題是我也在solars上執行這個expect並且提示是“>”所以如何創建一個支持“#”和“>”提示的expect行
在 Linux 上
expect # {send "/etc/init.d/sshd restart\r"}
太陽能
expect > {send "/etc/init.d/sshd restart\r"}
使用全域模式:
expect {[#>]}
或正則表達式:
expect -re {#|>}
- 正則表達式模式可以變得更精細。我建議您將提示匹配錨定到行尾。提示通常以空格結尾,因此您可以:expect -re {[#>] ?$}
您可以通過檢查 uname -s 的輸出或通過檢查以下輸出將其放入 if 語句中:
貓 /etc/release
貓 /etc/redhat-release
貓 /etc/lsb-release
並使用類似的東西:
if [[ $(uname -s) == "Linux" ]];then expect # {send "/etc/init.d/sshd restart\r"} else expect > {send "/etc/init.d/sshd restart\r"} fi
我已經好幾年沒有使用 ksh 了,如果語法錯誤,請見諒!