我的任务是自动化要在远程系统上运行的命令。到目前为止,我已经制定了大多数ssh命令语法,但问题是,当我将远程命令添加到末尾时,它将进行连接,然后在不运行远程命令的情况下冻结。我怀疑这是因为在登录完全完成之前正在运行该命令。远程系统不是普通的Linux系统。它是一个Watchguard防火墙,所以它是一种专有的操作系统,这使得事情变得更加困难。在输入命令之前,是否有一种方法可以使脚本停顿5或10秒?我的老板提到了他们曾经使用的一个应用程序,它将SSHing进程自动化到系统中并运行命令,但是他不记得它是什么,所以如果有人知道一个应用程序可以在Linux中这样做,那也是可行的。
发布于 2021-01-21 15:14:11
使用以下expect脚本(您可能需要首先安装期望 ):
#!/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”,以适应大写和小写版本)。然后等待直到OS提示符出现(如果OS提示符不是#,您需要适当地更改它),再等待5秒并键入命令,然后输入Enter。再次等待直到提示符出现。命令已经完成),然后键入exit,然后输入Enter结束会话并断开连接。
https://unix.stackexchange.com/questions/630242
复制相似问题