少し前に、「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システムでコマンドを実行
これがお役に立てば幸いです。