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