创建 shell 脚本以在远程主机内进行 ssh 并从该主机执行 ping 操作

创建 shell 脚本以在远程主机内进行 ssh 并从该主机执行 ping 操作

我想 ssh 到远程主机并从该主机 ping 另一个 IP。但是,使用以下脚本,我只能 ssh 进入该主机。

#!/bin/sh

sshpass -p <password> ssh -t -o StrictHostKeyChecking=no <username>@<remote host>
/usr/sbin/ping <some IP>

然后,在从远程主机存在后(回到我的源主机),ping 开始。

换句话说,当执行我的脚本时,会与远程主机建立 ssh 连接。 Ping 不会在该远程主机上发生。当我手动退出远程主机时,ping 会再次启动(从我的原始主机)。

如何使 ping 从远程主机而不是源主机开始?

答案1

ssh接受在远程计算机上运行的命令作为其参数,例如

ssh user@host ping ip-addr

这将ping ip-addr在远程计算机上执行,然后终止连接。

当您将ping命令放在下一行时,如下所示

ssh user@host
ping ip-addr

ssh默认情况下,将在远程计算机上启动交互式 shell。当该 shell 终止时,控制权将交回给您的脚本,并且该ping命令将在本地运行。

答案2

如果您想通过在远程计算机上运行,​​请对命令使用单引号ssh。运行多个命令也很方便。

#!/bin/sh

sshpass -p <password> ssh -t -o StrictHostKeyChecking=no <username>@<remote host> '
/usr/sbin/ping <some IP>'

相关内容