sshコマンドで接続先のサーバでコマンドを実行する


sshコマンドで接続先のサーバでコマンドを実行する

sshコマンド、Linuxユーザなら多くの方がご存知思います。
sshコマンド はリモートのサーバへ接続するコマンドで、以下のように使用します。

ユーザ名はリモートサーバ上のユーザ名、ホスト名(IPアドレス)はリモートサーバのホスト名(IPアドレス)です。

といった具体です。kamotoraユーザでhoge.hogeというホスト名に接続しています。
ここまでは普通の使い方。
sshコマンドですが、実は接続先のサーバ上でコマンドを実行するということもできるのです。やりかたは簡単。以下のとおり実行します。

 例えば以下のように実行した場合、hoge.hogeサーバにkamotoraユーザでログインし、ログイン先で「ls -l」コマンドを実行することになります。

基本編プラスアルファ

以下のように実行すると、接続先のサーバ上にファイルが作成されます。

ポイントはシングルクォーテーション(’)でコマンドを囲むこと。シングルクォーテーションの代わりにダブルクォーテーション(”)でも囲っても構いません。

次に、シングルクォーテーション(’)、ダブルクォーテーション(”)を取り除いた場合はどうなるか。

この場合、接続元、つまりsshコマンドを実行したサーバ上にファイルが作成されます。

応用編

ここから応用編です。先ほどはファイルへ書き出しましたが、逆に以下のようにファイルから読み込みとどうなるのか。

はい、lsコマンド等では何も起こりません。ただ、このコマンドが「sh」「bash」等の場合は結果が異なります。ファイルがスクリプトの場合、接続先でスクリプトを実行してくれます。

このスクリプトは接続元に配置されている必要があります。

仮に以下のように実行した場合、hoge.shは接続元に存在するhoge.shファイルです。

以下のように実行した場合は、hoge.shは接続先に存在するhoge.shファイルです。

こういった場合に便利

複数のサーバを管理していて、各サーバからまとめて情報を取得したい場合などに非常に楽ができます。

各サーバへファイルの配布をする必要がありません。

例えば、「hoge.sh」に各サーバで実行したいコマンドを書いておけば、以下のように実行すると、接続元のサーバに「output_ホスト1.txt」「output_ホスト2.txt」「output_ホスト3.txt」の3ファイルが作成されるわけです。

情報収集が簡単になることがわかるかと思います。

スポンサーリンク
ad-1
ad-1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする