在多臺(tái)Linux服務(wù)器上運(yùn)行命令的4個(gè)實(shí)用工具
譯文【51CTO.com快譯】本文將介紹如何同時(shí)在多臺(tái)Linux服務(wù)器上運(yùn)行命令。我們將解釋如何使用一些知名的工具,這些工具旨在同時(shí)在多臺(tái)服務(wù)器上執(zhí)行一系列重復(fù)的命令。本文對(duì)于通常每天要檢查多臺(tái)Linux服務(wù)器運(yùn)行狀況的系統(tǒng)管理員非常有用。
我們假設(shè)你已經(jīng)設(shè)置好了SSH以便訪問(wèn)所有服務(wù)器;其次假設(shè),同時(shí)訪問(wèn)多臺(tái)服務(wù)器時(shí),在所有Linux服務(wù)器上設(shè)置基于密鑰的無(wú)密碼SSH是合適的。這增強(qiáng)了服務(wù)器的安全性,并讓用戶易于訪問(wèn)。
1. PSSH-Parallel SSH
Parallel-SSH是一個(gè)快速且易于使用的基于命令行的開源Python工具包,用于在眾多Linux系統(tǒng)上并行執(zhí)行ssh。它包括用途不一的許多工具,比如parallel-ssh、parallel-scp、parallel-rsync、parallel-slurp和parallel-nuke(想了解更多信息,請(qǐng)閱讀相應(yīng)工具的參考手冊(cè)頁(yè))。
想安裝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
 
接下來(lái),在一個(gè)名為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í)行的一個(gè)或多個(gè)命令。-i標(biāo)志意味著,在每臺(tái)服務(wù)器上執(zhí)行命令完成后,顯示std輸出和std錯(cuò)誤。
- $ parallel-ssh -h hosts "uptime; df -h"
 
圖1:Pssh――在多臺(tái)Linux服務(wù)器上運(yùn)行命令
2. Pdsh-并行遠(yuǎn)程Shell實(shí)用程序
Pdsh是一個(gè)簡(jiǎn)單的開源并行遠(yuǎn)程shell工具,用于同時(shí)在多臺(tái)Linux服務(wù)器上執(zhí)行命令。它使用線程滑動(dòng)窗口來(lái)執(zhí)行遠(yuǎn)程命令。
想在Linux計(jì)算機(jī)上安裝Pdsh,運(yùn)行以下相應(yīng)的命令。
- $ sudo apt install pdsh #Debian/Ubuntu
 - # yum install pdsh #RHEL/CentOS
 - # dnf install pdsh #Fedora 22+
 
想在多臺(tái)服務(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――在多臺(tái)Linux服務(wù)器上執(zhí)行命令
如果你沒(méi)有在命令行上指定要執(zhí)行的遠(yuǎn)程命令,如上所示,pdsh將以交互方式運(yùn)行,提示你輸入命令,并在使用回車符終止時(shí)運(yùn)行命令。想了解更多信息,請(qǐng)查閱pdsh參考手冊(cè)頁(yè):
- $ man pdsh
 
3. ClusterSSH
ClusterSSH是一個(gè)命令行工具,用于同時(shí)管理多臺(tái)服務(wù)器組成的集群。它為所有指定的服務(wù)器啟動(dòng)管理控制臺(tái)和xterm,讓你可以在所有服務(wù)器運(yùn)行同一個(gè)命令。
想使用clusterssh,先將它安裝在本地Linux計(jì)算機(jī)上,如圖所示。
- $ sudo apt install clusterssh #Debian/Ubuntu
 - # yum install clusterssh #RHEL/CentOS
 - $ sudo dnf install clusterssh #Fedora 22+
 
現(xiàn)已安裝了它,同時(shí)在遠(yuǎn)程服務(wù)器上打開管理控制臺(tái)和xterm,如下所示。想在所有服務(wù)器上運(yùn)行命令,點(diǎn)擊xterm輸入欄,然后輸入要運(yùn)行的命令;想管理單個(gè)主機(jī),請(qǐng)使用其管理控制臺(tái)。
- $ clusterssh linode cserver contabo
 
或者
- $ clusterssh username@server1 username@server2 username@server3
 
圖3:Clusterssh――管理多個(gè)SSH會(huì)話
想了解更多信息,請(qǐng)查閱clusterssh參考手冊(cè)頁(yè):
- $ man clusterssh
 
4. Ansible
Ansible是一個(gè)實(shí)現(xiàn)IT流程自動(dòng)化的熱門開源工具。它用于配置和管理系統(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)行時(shí)間和用戶,在上面的hosts配置文件中,只要運(yùn)行ansible命令行工具,如下所示。
-a選項(xiàng)用于指定傳遞給模塊的參數(shù),-u標(biāo)志指定通過(guò)SSH連接到遠(yuǎn)程服務(wù)器的默認(rèn)用戶名。
請(qǐng)注意,ansible CLI工具只允許你最多只執(zhí)行一個(gè)命令。
- $ ansible webservers -a "w " -u admin
 
圖4:Ansible――在多臺(tái)Linux服務(wù)器上運(yùn)行命令
就這樣!我們?cè)诒疚闹薪忉屃巳绾问褂贸S玫墓ぞ咄瑫r(shí)在多臺(tái)遠(yuǎn)程Linux服務(wù)器上運(yùn)行命令。如果你知道其他用途一樣但本文沒(méi)有提到的工具,歡迎補(bǔ)充。
原文標(biāo)題:4 Useful Tools to Run Commands on Multiple Linux Servers,作者:Aaron Kili
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】



















 
 
 






 
 
 
 