GNU/Linux >> Linux の 問題 >  >> Linux

複数のリモートシステムで単一のコマンドを一度に実行する方法

少し前に、「Linuxのコマンドラインでファイルを複数のディレクトリにコピーする」のガイドを公開しました。 。その記事では、1つのファイルを一度に複数のディレクトリにコピーするさまざまな方法を説明しました。今日は、Unixライクなオペレーティングシステムで複数のリモートシステムで一度に1つのコマンドを実行する方法を見ていきます。ご存知のように、sshを使用してリモートシステムにアクセスして通信することができます。 openSSHを使用すると、リモートシステムであらゆる種類の管理タスクを実行できます。 openSSHの制限の1つは、複数のリモートシステムで一度に1つのコマンドを実行できないことです。問題ない。ここがPSSH このギャップを埋めるようになります。

ダウンロード -無料ガイド:「Linuxカーネルモジュールプログラミングガイド」

PSSH 、または P arallel SSH は、複数のホストで並列にSSH接続するのに役立つコマンドラインスイートです。 PSSHスイートは、次のコマンドで構成されています。

  • pssh -複数のリモートシステムに並列にSSH接続します。
  • pscp -複数のホストと並行してファイルをコピーします。
  • prsync :複数のホストと並行してファイルをコピーします。
  • プヌーク :複数のホストでプロセスを並行して強制終了します。
  • pslurp :複数のホストからファイルを並行してコピーします。

このチュートリアルでは、PSSHを使用して複数のホストで一度に1つのコマンドを実行する方法を説明します。

PSSHのインストール

PIPを使用してPSSHを簡単にインストールできます 、Pythonパッケージマネージャー。

Arch Linuxとその派生物にPIPをインストールするには、以下を実行します:

$ sudo pacman -S python-pip

RHEL、Fedora、CentOSの場合:

$ sudo yum install epel-release
$ sudo yum install python-pip

または、

$ sudo dnf install epel-release
$ sudo dnf install python-pip

Debian、Ubuntu、Linux Mintの場合:

$ sudo apt-get install python-pip

PIPを使用したPythonパッケージの管理の詳細については、次のリンクを参照してください。

  • Pipを使用してPythonパッケージを管理する方法

PIPをインストールしたら、次のコマンドを実行してPSSHをインストールします。

$ sudo pip install pssh

PSSHがインストールされました!先に進んで、その使用方法を見てみましょう。

PSSHを使用して複数のリモートシステムで一度に1つのコマンドを実行する

重要: PSSHを使用するには(このチュートリアルの目的でのみ)、すべてのリモートシステムが同じパスワードを持つ共通のユーザー名を持っている必要があります 。そうでなければ、この方法は役に立ちません。たとえば、 skという名前のユーザーをすでに作成しているとします。 パスワードostechnix すべてのリモートホストで。すべてのリモートシステムでも同じパスワードを持つ同じユーザーが必要です。

次に、PSSHを使用して複数のリモートホストで単一のコマンドを実行する方法を見てみましょう。コマンドを実行するローカルシステムに移動し、 remotehosts.txtというテキストファイルを作成します 。好きな名前を付けることができます。

$ vi remotehosts.txt

以下に正確に示すように、ポート番号を使用してリモートホストのIPアドレスを1つずつ追加します。

192.168.1.103:22
192.168.1.104:22

ここで、 192,168.1.103 および192.168.1.104 リモートシステムのIPアドレスです。 22 はsshポート番号です。すでに変更している場合は、正しいポート番号を記載する必要があります。また、ローカルシステムからssh経由ですべてのリモートホストにアクセスできることを確認してください。

次に、ローカルシステムから両方のリモートホストの稼働時間を確認しましょう。これを行うには、次を実行します:

$ pssh -h remotehosts.txt -l sk -A -i "uptime"

ここで

  • remotehosts.txt -両方のリモートシステムのIPアドレスが含まれています。
  • sk -両方のリモートシステムのユーザー名

ユーザーのパスワードを入力します"sk"

出力例:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:51:15 [SUCCESS] 192.168.1.103:22
 20:50:50 up 8 min, 1 user, load average: 0.05, 0.11, 0.10
[2] 20:51:15 [SUCCESS] 192.168.1.104:22
 20:50:52 up 12 min, 1 user, load average: 0.00, 0.07, 0.12

上記のように、2つのリモートホストで「uptime」コマンドを実行し、一度に結果を取得しました。

カーネルバージョンはどうですか?両方のリモートホストのインストール済みバージョンを確認するには、次を実行します。

$ pssh -h remotehosts.txt -l sk -A -i "uname -r"

出力例:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:53:09 [SUCCESS] 192.168.1.103:22
3.10.0-327.22.2.el7.x86_64
[2] 20:53:09 [SUCCESS] 192.168.1.104:22
4.4.0-21-generic

とてもかっこいいですね。両方のリモートホストに一度にディレクトリを作成できますか?はい、もちろん!これを行うには、次のコマンドを実行します。

$ pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"

同様に、PSSHを使用して、ローカルシステムから複数のリモートホストで実行したいことをすべて実行できます。

重要: PSSHを使用する際は十分に注意してください。 1つの不正なコマンドが複数のホストで同時に実行され、すべてのホストに損傷を与えます。したがって、この方法を本番環境で使用する場合は十分に注意してください。これを仮想マシンでテストすることをお勧めします。 PSSHに慣れたら、必要に応じて本番環境で使用できます。

推奨される読み物:

  • DSH –一度に複数のホストでLinuxコマンドを実行する
  • SSH経由でリモートLinuxシステムでコマンドを実行

これがお役に立てば幸いです。


Linux
  1. DSH –一度に複数のホストでLinuxコマンドを実行する

  2. Unixの単一のコマンドまたはスクリプトで複数のファイルの名前を変更する方法は??

  3. 複数の Tor プロセスを異なる終了 IP で一度に実行する方法は?

  1. Linux:特定のディレクトリでコマンドを実行する方法

  2. 起動後にコマンドを実行するにはどうすればよいですか?

  3. Unixで単一のコマンドまたはスクリプトで複数のファイルの名前を変更する方法は?

  1. Linux Rsync(リモート同期)コマンドの使用方法

  2. 変数に格納されているコマンドを実行するにはどうすればよいですか?

  3. bashシェルを使用してコマンドを複数回実行する方法は?