在多台Linux服務器上運行命令的4個實用工具

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

本文將介紹如何同時在多台Linux服務器上運行命令。我們將解釋如何使用一些知名的工具,這些工具旨在同時在多台服務器上執行一系列重復的命令。本文對於通常每天要檢查多台Linux服務器運行狀況的系統管理員非常有用。

我們假設你已經設置好了SSH以便訪問所有服務器;其次假設,同時訪問多台服務器時,在所有Linux服務器上設置基於密鑰的無密碼SSH是合適的。這增強了服務器的安全性,並讓用戶易於訪問。

1. PSSH-Parallel SSH

Parallel-SSH是一個快速且易於使用的基於命令行的開源Python工具包,用於在眾多Linux系統上並行執行ssh。它包括用途不一的許多工具,比如parallel-ssh、parallel-scp、parallel-rsync、parallel-slurp和parallel-nuke(想了解更多信息,請閱讀相應工具的參考手冊頁)。

想安裝parallel-ssh,需要先在Linux系統上安裝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

保存文件並關閉。

現在運行parallel-ssh,使用-h選項指定hosts文件,並指定在所有指定的服務器上執行的一個或多個命令。-i標誌意味著,在每台服務器上執行命令完成後,顯示std輸出和std錯誤。$ parallel-ssh -h hosts “uptime; df -h”

圖1:Pssh――在多台Linux服務器上運行命令

2. Pdsh-並行遠程Shell實用程序

Pdsh是一個簡單的開源並行遠程shell工具,用於同時在多台Linux服務器上執行命令。它使用線程滑動窗口來執行遠程命令。

想在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服務器上執行命令

如果你沒有在命令行上指定要執行的遠程命令,如上所示,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+

現已安裝了它,同時在遠程服務器上打開管理控制台和xterm,如下所示。想在所有服務器上運行命令,點擊xterm輸入欄,然後輸入要運行的命令;想管理單個主機,請使用其管理控制台。$ clusterssh linode cserver contabo

或者$ clusterssh [email protected] [email protected] [email protected]

圖3:Clusterssh――管理多個SSH會話

想了解更多信息,請查閱clusterssh參考手冊頁:$ man clusterssh

4. Ansible

Ansible是一個做到IT流程自動化的熱門開源工具。它用於配置和管理系統、部署應用程序等等。

想在Linux系統上安裝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

保存文件並關閉。

現在想檢查連接到組webservers中指定的所有服務器的正常運行時間和用戶,在上面的hosts配置文件中,只要運行ansible命令行工具,如下所示。

-a選項用於指定傳遞給模塊的參數,-u標誌指定通過SSH連接到遠程服務器的默認用戶名。

請注意,ansible CLI工具只允許你最多只執行一個命令。$ ansible webservers -a “w ” -u admin

圖4:Ansible――在多台Linux服務器上運行命令

就這樣!我們在本文中解釋了如何使用常用的工具同時在多台遠程Linux服務器上運行命令。如果你知道其他用途一樣但本文沒有提到的工具,歡迎補充。

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!