LinuxやUNIXで、スクリプトをリモート先に配布せずに、ローカルにスクリプトをおいたままリモート先でスクリプトを実行させたいときもあるだろう。
そんなときは、以下のようにsshコマンドを実行するといいだろう。
ssh リモート先のユーザ名@リモート先のホスト名(IPアドレス) 'sh ' < 実行させたいスクリプトのパス
「'sh '」の箇所については、「sh -x」でも「'bash -x'」でも、ローカルで実行する際と同じで構わない。
それでは、実際に実行してみよう。
以下のスクリプトをローカル、リモート先それぞれで実行してみることにする。
#!/bin/sh
HOST_NAME=`hostname`
USER_NAME=`whoami`
echo $USER_NAME@$HOST_NAME
実行した結果がこちら。
見てわかるように、ローカル側で実行した場合はホスト名、ユーザ名はローカルのものが設定されているが、リモート側で実行させたらちゃんとリモート側のホスト名、ユーザ名が出力されている。
これを利用すれば、スクリプトなどに修正が出た際、資材としてスクリプトを配布しなくても実行させることが可能だ。