リモートホストに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>'