リモートホストにSSHで接続してpingするシェルスクリプトを作成する

リモートホストにSSHで接続してpingするシェルスクリプトを作成する

リモートホストにSSH経由で接続し、そのホストから別のIPにpingを送信したいと思います。ただし、次のスクリプトを使用すると、ホストに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デフォルトでは、対話型シェルはリモートシステムで実行されます。シェルが終了すると、制御はスクリプトに返され、pingコマンドはローカルで実行されます。

答え2

リモートシステムで実行するには、コマンドに一重引用符を使用しますssh。複数のコマンドを実行するのも便利です。

#!/bin/sh

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

関連情報