Linux

在發送遠端命令之前需要暫停通過 SSH 執行遠端命令

  • January 21, 2021

我的任務是自動執行要在遠端系統上執行的命令。到目前為止,我已經解決了大部分 ssh 命令語法,但問題是,當我將遠端命令添加到末尾時,它會連接,但隨後會凍結而不執行遠端命令。我懷疑這是因為在登錄完全完成之前正在執行該命令。遠端系統不是普通的 Linux 系統。它是一個 Watchguard 防火牆,所以它是一種專有作業系統,這讓事情變得更加困難。有沒有辦法讓我在輸入命令之前暫停五到十秒的腳本?我的老闆提到了他們過去使用的一個應用程序,它可以自動執行 SSH 進入系統並執行命令的過程,但他不記得它是什麼,所以如果有人知道可以在 Linux 中執行此操作的應用程序,

使用以下期望腳本(您可能需要先安裝期望):

#!/usr/bin/expect
spawn ssh -l myuser 10.0.0.1
expect "assword:"
send "mypassword\r"
expect "#"
sleep 5
send "command\r"
expect "#"
send "exit\r"

此腳本執行命令ssh -l myuser 10.0.0.1並等待直到字元串assword:顯示在 ssh 會話中,然後\r鍵入以小寫版本)。然後它等待直到出現作業系統提示(如果作業系統提示不是#,您需要適當地更改它),再等待 5 秒並鍵入命令,然後按 Enter。再次等待直到出現提示(即命令已完成)並鍵入exit,然後按 Enter 以結束會話並斷開連接。

引用自:https://unix.stackexchange.com/questions/630242