通過dsh批量管理Linux服務器(一)【感謝作者的無私分享】

通過dsh批量管理Linux服務器


目前在企業網絡中越來越多的出現Linux服務器,而如何方便高效的管理大量的Linux服務器是系統管理員非常關心的一個問題。現在有大量的開源管理工具,可以實現這樣的管理工具,現在給大家介紹一個通過命令行有效地管理大量Linux的工具---dsh。



【51CTO獨家特稿】目前在企業網絡中越來越多的出現Linux服務器,而如何方便高效的管理大量的Linux服務器是系統管理員非常關心的一個問題。現在有大量的開源管理工具,可以實現這樣的管理工具,現在給大家介紹一個通過命令行有效地管理大量Linux的工具---dsh。

dsh是專爲在遠程系統上運行Shell命令設計的,通過dsh可以簡化對大量計算機的操作。dsh命令語法如下:

dsh [-m machinename | -a | -g groupname] [-f machinefile] [-M] [-q] [--wait-shell]--
commandline

常用選項:

-M:在顯示遠程命令執行的輸出時,在前面加上主機名。

-a:如果經常操作同一組計算機,可以創建一個全局集合的組。$HOME/.dsh/machines.list文件是全局集合的定義。在該文件中每行一個計算機的IP地址,在指定-a後,dsh就會在machines.list中列出的所有計算機上執行指定的命令。

-q:指定使用安靜模式輸出。

-m machinename:指定需要執行指定命令的計算機。

-g groupname:指定需要執行指定命令的計算機組,主機名組在$HOME/.dsh/group/目錄是定義,每個計算機組一個文件,文件名即是組外,在文件中每行一個計算機IP地址。

-f machinefile:指定計算機列表文件。

-wait-shell:在默認情況下,dsh是並行地在計算機上運行命令。如果希望順序地運行命令則指定--wait-shell。

下面在我們一起來看看在如下圖的網絡中如何通過dsh有效的管理Linux服務器。


 

通過dsh批量管理Linux服務器

1、 dsh是通過SSH方式連接到服務器,所以需要在所有服務器上安裝SSH。

2、 在srv.example.zqin上通過如下命令安裝dsh。(wget安裝方法見另一篇文章)

srv:~# apt-get -y install libdshconfig1 libdshconfig1-dev dsh

3、 在使用dsh進行管理時,需要輸入被管理服務器的用戶名及密碼,爲了使用起來更加方便可使用如下命令將SSH的公鑰複製到被管理服務器。

 srv:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
dd:e9:d3:84:fc:4c:ff:b4:b0:fa:12:fa:fd:49:3d:4d root@testsrvThe key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| . o o |
| S . = o E|
| o * oo|
| . +.+o=|
| . ...+.=|
| .o++.+.|
+-----------------+
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.21:/root/.ssh/authorized_keys
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.22:/root/.ssh/authorized_keys
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.31:/root/.ssh/authorized_keys
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.32:/root/.ssh/authorized_keys

如果被管理的服務器比較多也可以編寫個腳本來複制公鑰。下面是一個複製公鑰到多個服務器上的腳本。

for i in $(seq 200 253)
do
ssh 192.168.159.$i -C mkdir /root/.ssh
scp ~/.ssh/id_rsa.pub 192.168.1.$i:/root/.ssh/authorized_keys
done

4、 爲了方便使用dsh,可以將所有被管理服務器分類並存放到對應文件中。

將所有被管理服務器的IP地址(或FQDN)加入$HOME/.dsh/machines.list文件中(每行一個)。

在$HOME/.dsh/group/目錄下建立名爲web的文件,並將web1、web2的IP地址(或FQDN)加入其中(每行一個)。

在$HOME/.dsh/group/目錄下建立名爲db的文件,並將db1、db2的IP地址(或FQDN)加入其中(每行一個)。

在上述配置完成後就可以在srv上通過dsh進行批量操作了,下面我們一起來看幾個例子。

1、 在db1.example.zqin上執行reboot命令。

srv:~# dsh -M -m db1.example.zqin -- reboot

2、 在$HOME/.dsh/machines.list文件中定義的所有服務器上同時執行updatedb命令。

srv:~# dsh -M -a -- updatedb

3、 在$HOME/.dsh/group/web文件中定義的所有服務上面上同時執行命令。

srv:~# dsh -M -g -- /etc/init.d/apache2 restart


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章