在多臺Linux服務(wù)器上運(yùn)行命令的4個實(shí)用工具
譯文【51CTO.com快譯】本文將介紹如何同時在多臺Linux服務(wù)器上運(yùn)行命令。我們將解釋如何使用一些知名的工具,這些工具旨在同時在多臺服務(wù)器上執(zhí)行一系列重復(fù)的命令。本文對于通常每天要檢查多臺Linux服務(wù)器運(yùn)行狀況的系統(tǒng)管理員非常有用。
我們假設(shè)你已經(jīng)設(shè)置好了SSH以便訪問所有服務(wù)器;其次假設(shè),同時訪問多臺服務(wù)器時,在所有Linux服務(wù)器上設(shè)置基于密鑰的無密碼SSH是合適的。這增強(qiáng)了服務(wù)器的安全性,并讓用戶易于訪問。
1. PSSH-Parallel SSH
Parallel-SSH是一個快速且易于使用的基于命令行的開源Python工具包,用于在眾多Linux系統(tǒng)上并行執(zhí)行ssh。它包括用途不一的許多工具,比如parallel-ssh、parallel-scp、parallel-rsync、parallel-slurp和parallel-nuke(想了解更多信息,請閱讀相應(yīng)工具的參考手冊頁)。
想安裝parallel-ssh,需要先在Linux系統(tǒng)上安裝PIP。
- $ sudo pip install parallel-ssh
 - $ sudo apt install python-pip python-setuptools #Debian/Ubuntu
 - # yum install python-pip python-setuptools #RHEL/CentOS
 - # dnf install python-pip python-setuptools #Fedora 22+
 
然后使用pip安裝parallel-ssh,如下所示。
- $ sudo pip install parallel-ssh
 
接下來,在一個名為hosts的文件中輸入帶SSH端口的遠(yuǎn)程Linux服務(wù)器的主機(jī)名或IP地址(該文件名可隨意命名):
- $ vim hosts
 - pssh hosts file
 - 192.168.0.10:22
 - 192.168.0.11:22
 - 192.168.0.12:22
 
保存文件并關(guān)閉。
現(xiàn)在運(yùn)行parallel-ssh,使用-h選項(xiàng)指定hosts文件,并指定在所有指定的服務(wù)器上執(zhí)行的一個或多個命令。-i標(biāo)志意味著,在每臺服務(wù)器上執(zhí)行命令完成后,顯示std輸出和std錯誤。
- $ parallel-ssh -h hosts "uptime; df -h"
 
圖1:Pssh――在多臺Linux服務(wù)器上運(yùn)行命令
2. Pdsh-并行遠(yuǎn)程Shell實(shí)用程序
Pdsh是一個簡單的開源并行遠(yuǎn)程shell工具,用于同時在多臺Linux服務(wù)器上執(zhí)行命令。它使用線程滑動窗口來執(zhí)行遠(yuǎn)程命令。
想在Linux計算機(jī)上安裝Pdsh,運(yùn)行以下相應(yīng)的命令。
- $ sudo apt install pdsh #Debian/Ubuntu
 - # yum install pdsh #RHEL/CentOS
 - # dnf install pdsh #Fedora 22+
 
想在多臺服務(wù)器上運(yùn)行命令,將服務(wù)器添加到hosts文件,如前所述。然后運(yùn)行pdsh,如圖所示;標(biāo)志-w用于指定hosts文件,-R用于指定遠(yuǎn)程命令模塊(可用的遠(yuǎn)程命令模塊包括ssh、rsh和exec,默認(rèn)模塊是rsh)。
留意hosts文件前面的^。
- $ pdsh -w ^hosts -R ssh "uptime; df -h"
 
圖2:Pdsh――在多臺Linux服務(wù)器上執(zhí)行命令
如果你沒有在命令行上指定要執(zhí)行的遠(yuǎn)程命令,如上所示,pdsh將以交互方式運(yùn)行,提示你輸入命令,并在使用回車符終止時運(yùn)行命令。想了解更多信息,請查閱pdsh參考手冊頁:
- $ man pdsh
 
3. ClusterSSH
ClusterSSH是一個命令行工具,用于同時管理多臺服務(wù)器組成的集群。它為所有指定的服務(wù)器啟動管理控制臺和xterm,讓你可以在所有服務(wù)器運(yùn)行同一個命令。
想使用clusterssh,先將它安裝在本地Linux計算機(jī)上,如圖所示。
- $ sudo apt install clusterssh #Debian/Ubuntu
 - # yum install clusterssh #RHEL/CentOS
 - $ sudo dnf install clusterssh #Fedora 22+
 
現(xiàn)已安裝了它,同時在遠(yuǎn)程服務(wù)器上打開管理控制臺和xterm,如下所示。想在所有服務(wù)器上運(yùn)行命令,點(diǎn)擊xterm輸入欄,然后輸入要運(yùn)行的命令;想管理單個主機(jī),請使用其管理控制臺。
- $ clusterssh linode cserver contabo
 
或者
- $ clusterssh username@server1 username@server2 username@server3
 
圖3:Clusterssh――管理多個SSH會話
想了解更多信息,請查閱clusterssh參考手冊頁:
- $ man clusterssh
 
4. Ansible
Ansible是一個實(shí)現(xiàn)IT流程自動化的熱門開源工具。它用于配置和管理系統(tǒng)、部署應(yīng)用程序等等。
想在Linux系統(tǒng)上安裝Ansible,運(yùn)行以下相應(yīng)的命令:
- $ sudo apt install ansible #Debian/Ubuntu
 - # yum install ansible #RHEL/CentOS
 - $ sudo dnf install ansible #Fedora 22+
 
安裝ansible后,可以在文件/etc/anasible/hosts中添加服務(wù)器的主機(jī)名或IP地址。
- $ sudo vim /etc/anasible/hosts
 
在組中指定它們,比如webservers。
- # Ex 2: A collection of hosts belonging to the 'webservers' group
 - [webservers]
 - 139.10.100.147
 - 139.20.40.90
 - 192.30.152.186
 - Ansible – Run Command on Multiple Linux Servers
 
保存文件并關(guān)閉。
現(xiàn)在想檢查連接到組webservers中指定的所有服務(wù)器的正常運(yùn)行時間和用戶,在上面的hosts配置文件中,只要運(yùn)行ansible命令行工具,如下所示。
-a選項(xiàng)用于指定傳遞給模塊的參數(shù),-u標(biāo)志指定通過SSH連接到遠(yuǎn)程服務(wù)器的默認(rèn)用戶名。
請注意,ansible CLI工具只允許你最多只執(zhí)行一個命令。
- $ ansible webservers -a "w " -u admin
 
圖4:Ansible――在多臺Linux服務(wù)器上運(yùn)行命令
就這樣!我們在本文中解釋了如何使用常用的工具同時在多臺遠(yuǎn)程Linux服務(wù)器上運(yùn)行命令。如果你知道其他用途一樣但本文沒有提到的工具,歡迎補(bǔ)充。
原文標(biāo)題:4 Useful Tools to Run Commands on Multiple Linux Servers,作者:Aaron Kili
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】



















 
 
 






 
 
 
 