Windows マシンから複数の Linux サーバーで同じ/繰り返しコマンドを実行する方法を学びます。このトリックは、コマンド ライン パテの「plink」ユーティリティを使用します。

sysadmin の主な懸念事項の 1 つは、使用できる一元化されたツールがない場合に、インフラ内の複数の Linux サーバーで同じ/繰り返しコマンドを実行することです。この投稿では、複数の Linux サーバーでコマンドを一度に実行する方法を説明します。アカウントのパスワードをどこにも保存する必要はなく、expect
を持つ必要さえありません。 ソース マシンで機能します!
前提条件
- plink がダウンロードされた Windows マシン (ここから plink をダウンロード)
- Windows マシンから Linux サーバーにアクセスできる必要があります
やり方
plink は putty コマンドライン ユーティリティです。 plink を使用すると、コマンド ラインで IP、ユーザー名、パスワードを指定してサーバーに接続できます。 plink は、Windows のコマンド プロンプトから呼び出すことができます。
C:\Users\noname\Desktop>plink -ssh [email protected] -pw password@123 (hostname; date) testserver Tue Nov 1 12:54:33 IST 2016 C:\Users\noname\Desktop>
cmd
と入力して、Windows コマンド プロンプトに移動します。 実行ウィンドウで (Windows キー + r)。 plink 実行可能ファイルが保存されているフォルダーに移動し、上記のように plink コマンドを入力します。
- ssh:接続するプロトコル
- id@server IP
- pw:アカウントのパスワード
- 中かっこ内の Linux サーバーで実行するコマンド
これがプリンクの仕組みです。複数のサーバーで同じコマンドを実行するには、以下の例を参照してください。 3 つのサーバーに接続し、ホスト名と日付のコマンドを実行します。
まず、3 つのサーバーの IP アドレスすべてを 1 つのファイル ip_list.txt
に入れます。 .次に、コマンドプロンプトで以下のようにそのファイルに対して単純な for ループを実行します。これは非常に基本的なバッチ スクリプトです。
C:\Users\noname\Desktop>FOR /F "tokens=1,2* delims=," %G IN (C:\Users\noname\Desktop\ip_list.txt) DO plink -ssh user1@%G -pw password@123 (hostname; date) testserver Tue Nov 1 12:54:33 IST 2016 testserver1 Tue Nov 1 12:54:36 IST 2016 testserver2 Tue Nov 1 12:54:39 IST 2016 C:\Users\noname\Desktop>
出来上がり!すべてのサーバーのコマンド出力があります!一度にすべてのサーバーで実行されるコマンド。
これは、すべてのサーバーからの 1 行の出力を確認する必要がある場合、またはすべてのサーバーで一度にアカウント更新コマンドを実行したい場合に非常に便利です。