SSHを利用したリモートサーバに対するコマンド実行
sshとscp
遠隔地にあるサーバ (リモートサーバ) に対して、手元環境にある端末からログインしたい場合、通常SSHを使用する。 SSHは、リモートサーバにsshdサーバが実装されていることが条件であるが、最近のLinux server はほぼデフォルトでインストールされている。 仮にインストールされていない場合であっても用意にインストール可能である。
一方、リモートサーバ上にある任意のファイルを取得したい場合は、scpコマンドを使用する。 scp コマンドを実行するためには、sshと同様、リモートサーバにsshdサーバが必要である。
ssh を利用したコマンド実行
上記以外のケースとして、リモートサーバに対して何らかの処理を実行したい場合がある。 例えば、リモートサーバのディスク容量を調べたい場合、sshでログインした後、dfコマンドを実行し、ディスク容量を把握する。 定期的にデータを取得しリモートサーバに蓄積していく場合、リモートサーバのディスク容量を監視することは必須である。 1台のリモートサーバに対して実行する場合は、前記の通り、sshでログインし、dfコマンドを手動で実行すれば良いが、 複数台のリモートサーバに対して実行することは、大変手間である。 ここでsshを用いたコマンド実行機能を使用する。sshでは下記のように記述することによって、 リモートサーバに対して任意のコマンドが実行可能である。
ssh <user>@<ipaddress> "<コマンド>"
例えば、ディスクの容量を監視したい場合、
ssh <user>@<ipaddress> "df"
とすればよい。
また<コマンド> の部分は、下記の1 or2 のように記述することによって複数コマンドの実行が可能である。
1.
ssh <user>@<ipaddress> "df ; ls ; date"
2.
cat << EOF > /tmp/CMD.txt df ls date EOF CMD=`cat /tmp/CMD.txt` rm /tmp/CMD.txt ssh <user>@<ipaddress> "$CMD"
Keyword(s):
References:[とらりもんHOME]