我想通过 ssh 连接到远程主机并从该主机 ping 另一个 IP。但是,使用以下脚本,我只能通过 ssh 进入该主机。
#!/bin/sh
sshpass -p <password> ssh -t -o StrictHostKeyChecking=no <username>@<remote host>
/usr/sbin/ping <some IP>
Run Code Online (Sandbox Code Playgroud)
然后,从远程主机存在后(回到我的源主机),ping 开始。
换句话说,当我的脚本被执行时,一个 ssh 连接被建立到一个远程主机上。Ping 不会发生在那个远程主机上。当我手动退出远程主机时,ping 再次启动(从我的原始主机)。
如何使 ping 从远程主机而不是源主机开始?
ssh
将在远程机器上运行的命令作为其参数,例如
ssh user@host ping ip-addr
Run Code Online (Sandbox Code Playgroud)
这将ping ip-addr
在远程机器上执行,然后终止连接。
当您将ping
命令放在下一行时,如
ssh user@host
ping ip-addr
Run Code Online (Sandbox Code Playgroud)
ssh
默认情况下,将在远程计算机上启动交互式 shell。当该 shell 终止时,控制权将交还给您的脚本,并且该ping
命令在本地运行。