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

linux

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

sshコマンド、Linuxユーザなら多くの方がご存知でしょう。
今回は一歩進んだsshコマンドの使い方をご紹介していきます。
使いこなせると作業効率があがること間違いなしです!応用編まであるので、順番にトライしてみてください!
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ファイルが作成されるわけです。

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

 

Secured By miniOrange
タイトルとURLをコピーしました