需要通过 SSH 运行远程命令,并在发送远程命令之前暂停

需要通过 SSH 运行远程命令,并在发送远程命令之前暂停

我的任务是自动化在远程系统上运行的命令。到目前为止,我已经解决了大部分 ssh 命令语法,但问题是,当我将远程命令添加到末尾时,它将连接,但随后冻结而不运行远程命令。我怀疑这是因为该命令是在登录完全完成之前运行的。远程系统不是普通的Linux系统。它是一个 Watchguard 防火墙,因此它是一种专有操作系统,这让事情变得更加困难。有没有办法让我制作一个在输入命令之前暂停五秒或十秒的脚本?我的老板提到了他们曾经使用的一个应用程序,该应用程序可以自动执行 SSH 进入系统并运行命令的过程,但他不记得它是什么,所以如果有人知道可以在 Linux 中执行此操作的应用程序,那就行了, 也。

答案1

使用以下期望脚本(您可能需要安装预计第一的):

#!/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,即 Enter 键(我故意从“password:”提示中省略了“p”,以适应大写和小写版本)。然后它会等待,直到出现操作系统提示符(如果操作系统提示符不是#,则需要适当更改),再等待 5 秒并键入 command,然后按 Enter。再次等待,直到出现提示(即命令已完成)并键入,exit然后按 Enter 键结束会话并断开连接。

相关内容