通過(guò)dsh批量管理Linux服務(wù)器
原創(chuàng)【51CTO獨(dú)家特稿】目前在企業(yè)網(wǎng)絡(luò)中越來(lái)越多的出現(xiàn)Linux服務(wù)器,而如何方便高效的管理大量的Linux服務(wù)器是系統(tǒng)管理員非常關(guān)心的一個(gè)問(wèn)題?,F(xiàn)在有大量的開源管理工具,可以實(shí)現(xiàn)這樣的管理工具,現(xiàn)在給大家介紹一個(gè)通過(guò)命令行有效地管理大量Linux的工具---dsh。
dsh是專為在遠(yuǎn)程系統(tǒng)上運(yùn)行Shell命令設(shè)計(jì)的,通過(guò)dsh可以簡(jiǎn)化對(duì)大量計(jì)算機(jī)的操作。dsh命令語(yǔ)法如下:
dsh [-m machinename | -a | -g groupname] [-f machinefile] [-M] [-q] [--wait-shell]-- commandline
常用選項(xiàng):
-M:在顯示遠(yuǎn)程命令執(zhí)行的輸出時(shí),在前面加上主機(jī)名。
-a:如果經(jīng)常操作同一組計(jì)算機(jī),可以創(chuàng)建一個(gè)全局集合的組。$HOME/.dsh/machines.list文件是全局集合的定義。在該文件中每行一個(gè)計(jì)算機(jī)的IP地址,在指定-a后,dsh就會(huì)在machines.list中列出的所有計(jì)算機(jī)上執(zhí)行指定的命令。
-q:指定使用安靜模式輸出。
-m machinename:指定需要執(zhí)行指定命令的計(jì)算機(jī)。
-g groupname:指定需要執(zhí)行指定命令的計(jì)算機(jī)組,主機(jī)名組在$HOME/.dsh/group/目錄是定義,每個(gè)計(jì)算機(jī)組一個(gè)文件,文件名即是組外,在文件中每行一個(gè)計(jì)算機(jī)IP地址。
-f machinefile:指定計(jì)算機(jī)列表文件。
-wait-shell:在默認(rèn)情況下,dsh是并行地在計(jì)算機(jī)上運(yùn)行命令。如果希望順序地運(yùn)行命令則指定--wait-shell。#p#
下面在我們一起來(lái)看看在如下圖的網(wǎng)絡(luò)中如何通過(guò)dsh有效的管理Linux服務(wù)器。
1、 dsh是通過(guò)SSH方式連接到服務(wù)器,所以需要在所有服務(wù)器上安裝SSH。
2、 在srv.example.zqin上通過(guò)如下命令安裝dsh。
srv:~# apt-get -y install libdshconfig1 libdshconfig1-dev dsh
3、 在使用dsh進(jìn)行管理時(shí),需要輸入被管理服務(wù)器的用戶名及密碼,為了使用起來(lái)更加方便可使用如下命令將SSH的公鑰復(fù)制到被管理服務(wù)器。
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@testsrv The 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
如果被管理的服務(wù)器比較多也可以編寫個(gè)腳本來(lái)復(fù)制公鑰。下面是一個(gè)復(fù)制公鑰到多個(gè)服務(wù)器上的腳本。
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,可以將所有被管理服務(wù)器分類并存放到對(duì)應(yīng)文件中。
將所有被管理服務(wù)器的IP地址(或FQDN)加入$HOME/.dsh/machines.list文件中(每行一個(gè))。
在$HOME/.dsh/group/目錄下建立名為web的文件,并將web1、web2的IP地址(或FQDN)加入其中(每行一個(gè))。
在$HOME/.dsh/group/目錄下建立名為db的文件,并將db1、db2的IP地址(或FQDN)加入其中(每行一個(gè))。#p#
在上述配置完成后就可以在srv上通過(guò)dsh進(jìn)行批量操作了,下面我們一起來(lái)看幾個(gè)例子。
1、 在db1.example.zqin上執(zhí)行reboot命令。
srv:~# dsh -M -m db1.example.zqin -- reboot
2、 在$HOME/.dsh/machines.list文件中定義的所有服務(wù)器上同時(shí)執(zhí)行updatedb命令。
srv:~# dsh -M -a -- updatedb
3、 在$HOME/.dsh/group/web文件中定義的所有服務(wù)上面上同時(shí)執(zhí)行命令。
srv:~# dsh -M -g -- /etc/init.d/apache2 restart
作者簡(jiǎn)介:張勤(博客),MCSE、MCDBA、RHCE,從事軟件開發(fā)(Delphi、Java)、項(xiàng)目管理、系統(tǒng)集成工作。曾參與多個(gè)基于Windows及Linux的大型系統(tǒng)集成項(xiàng)目,并在國(guó)內(nèi)多個(gè)知名IT網(wǎng)站發(fā)表技術(shù)類文章。
【編輯推薦】