我想 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>'