如何在多臺遠端伺服器上同時執行命令
OpenSSH 是一個廣泛使用的工具,用於訪問遠端伺服器、複製或傳輸檔案以及執行各種系統管理任務。使用 OpenSSH 時需要注意的是,您無法一次性在多臺遠端伺服器上執行相同的命令。但是,別灰心!讓我們瞭解一下 **PSSH**(**Parallel SSH**),這是一個簡單而有用的 OpenSSH 替代方案,允許您從單個終端在多臺伺服器上執行命令。聽起來不錯?繼續閱讀以瞭解更多資訊 –
**PSSH** 包含以下命令:
- **pssh**: 一次性 SSH 到多臺伺服器
- **pscp**: 將檔案傳輸和複製到多個遠端系統
- **prsync**: 並行地將檔案複製到多個主機
- **pnuke**: 終止多個遠端主機上的程序
- **pslurp**: 將檔案從多個遠端主機複製到中央主機
在本文中,我們將討論如何在實際環境中安裝和使用 Pssh。
在 Linux 中安裝 PSSH 或 Parallel SSH
安裝 Pssh 最簡單的方法是使用 **pip**。對於那些還不瞭解的人來說,**pip** 是一個包管理系統,用於安裝和管理用 **Python** 編寫的軟體包。PSSH 支援 Python 2.4 及更高版本。
大多數 Linux 發行版的預設儲存庫中都提供 Pip。執行以下命令在您的 Linux 發行版中安裝 python-pip。
執行以下命令在您的 Linux 發行版中安裝 python-pip。
在 Arch Linux 及其衍生版上
sudo pacman -S python-pip
在 RHEL、CentOS、Fedora 上
sudo yum install python-pip
或者:
sudo dnf install python-pip
在 Debian、Ubuntu 及其衍生版上
sudo apt-get install python-pip
安裝 pip 後,執行以下命令安裝 Pssh。此命令適用於所有 Linux 發行版。
sudo sudo pip install pssh
示例輸出
Downloading/unpacking pssh Downloading pssh-2.3.1.tar.gz Running setup.py (path:/tmp/pip_build_root/pssh/setup.py) egg_info for package pssh Installing collected packages: pssh Running setup.py install for pssh changing mode of build/scripts-2.7/pssh from 644 to 755 changing mode of build/scripts-2.7/pnuke from 644 to 755 changing mode of build/scripts-2.7/prsync from 644 to 755 changing mode of build/scripts-2.7/pslurp from 644 to 755 changing mode of build/scripts-2.7/pscp from 644 to 755 changing mode of build/scripts-2.7/pssh-askpass from 644 to 755 changing mode of /usr/local/bin/pssh-askpass to 755 changing mode of /usr/local/bin/pslurp to 755 changing mode of /usr/local/bin/pscp to 755 changing mode of /usr/local/bin/pssh to 755 changing mode of /usr/local/bin/prsync to 755 changing mode of /usr/local/bin/pnuke to 755 Successfully installed pssh Cleaning up...
Pssh 已安裝到我們的系統中。讓我們看一些實際示例,學習如何在實際環境中使用 Pssh。
Pssh 用法
Pssh 的用法非常簡單!您需要建立一個主機檔案,並在其中新增遠端伺服器的 IP 地址和 SSH 埠號。
現在讓我們建立一個主機檔案
sudo nano hostfile.txt
您可以使用任何您喜歡的檔名。然後,按如下所示逐一新增遠端伺服器的詳細資訊 –
192.168.1.100:22 192.168.1.102:22
這裡,**192.168.1.100** 和 **192.168.1.102** 是我的遠端 Linux 主機的 IP 地址。儲存並關閉檔案。現在是測試一些命令的時候了。
讓我們使用一個命令檢查兩臺遠端伺服器的執行時間。為此,請執行
pssh -h hostfile.txt -l sk -A -i "uptime"
**重要提示:**這裡,**sk** 是我的遠端伺服器的使用者名稱。請注意,您需要在所有遠端伺服器上都有一個名為 **sk** 的使用者,並且 **密碼相同**。否則,此命令將無法執行。因此,必須在所有遠端伺服器上使用相同的使用者名稱和密碼。清楚了嗎?很好。
輸入使用者“sk”的密碼。
示例輸出
Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 17:02:08 [SUCCESS] 192.168.1.100:22 17:02:23 up 5:10, 1 user, load average: 0.24, 0.38, 0.61 [2] 17:02:08 [SUCCESS] 192.168.1.150:22 17:02:22 up 50 min, 1 user, load average: 0.00, 0.01, 0.05
該命令將顯示兩臺遠端伺服器的執行時間。
**警告:**使用 Pssh 時需要非常小心。由於它旨在一次在多臺伺服器上執行單個命令,因此一個錯誤的命令會同時損害多臺伺服器。因此,使用它時要非常謹慎。
讓我們檢查兩臺伺服器的核心版本。為此,請執行
pssh -h hostfile.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] 17:06:13 [SUCCESS] 192.168.1.100:22 4.8.13-1-ARCH [2] 17:06:13 [SUCCESS] 192.168.1.150:22 3.10.0-327.22.2.el7.x86_64
讓我們向所有遠端伺服器傳送一條訊息。
pssh -h hostfile.txt -l sk -A echo "Welcome to Tutroialpoint!!"
我可以一次將檔案複製到所有遠端伺服器嗎?是的,當然可以!
讓我們使用單個命令將名為 **test.txt** 的檔案複製到所有遠端伺服器。
pscp -h hostfile.txt -l sk -Av -r test.txt /tmp/
示例輸出
Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 17:36:59 [SUCCESS] 192.168.1.100:22 [2] 17:37:03 [SUCCESS] 192.168.1.150:22
現在,讓我們轉到遠端伺服器並檢查 test.txt 檔案是否已複製到 /tmp/ 目錄中。
太好了!test.txt 在那裡。
這同樣適用於目錄。要複製目錄,請執行
pscp -h hostfile.txt -l sk -Av -r tutorialspoint/ /tmp/
更多詳細資訊,請參考手冊頁。
man pssh
上述命令會將名為 **tutorialspoint** 的本地目錄複製到遠端系統的 /tmp/ 目錄。
目前就到這裡。希望本指南有所幫助。有關 Linux 的更多有趣更新,請繼續閱讀我們的文章。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP