並行分佈式運維工具pdsh

pdsh的全稱是parallel distributed shell,與pssh相似,pdsh可並行執行對遠程目標主機的操做,在有批量執行命令或分發任務的運維需求時,使用這個命令可達到事半功倍的效果。同時,pdsh還支持交互模式,當要執行的命令不肯定時,可直接進入pdsh命令行,很是方便。正則表達式

 

1、 pdsh應用場景shell

pdsh的應用場景基本上與pssh相同,都用於大批量服務器的配置、部署、文件複製等運維操做。在使用pdsh時,仍須要配置本地主機和遠程主機間的單向ssh信任。另外,pdsh還附帶了pdcp命令,此命令能夠將本地文件批量複製到遠程的多臺主機上,這在大規模的文件分發環境下是很是有用的。服務器

pdsh能夠經過多種方式在遠程主機上運行命令,默認是rsh方式,另外也支持ssh、mrsh、qsh、mqsh、krb四、xcpu等多種rcmd模塊,這個能夠在運行命令時經過參數指定。運維

 

2、pdsh的安裝與語法ssh

 

一、pdsh的安裝過程工具

 

pdsh的安裝很是簡單,有rpm包和源碼包兩種方式,你們可根據本身的喜愛選擇適合本身的安裝方式。能夠在http://code.google.com/p/pdsh/ 下載最新的源碼包進行編譯安裝,目前最新版本爲pdsh-2.29,這裏下載的源碼包爲pdsh-2.29.tar.bz2。編譯安裝過程以下:google

[root@server ~]# tar jxvf pdsh-2.29.tar.bz2spa

[root@server ~]# cd pdsh-2.29命令行

[root@server pdsh-2.29]#./configure --with-ssh --with-rsh --with-mrsh --with-mqshell  \code

> --with-qshell  --with-dshgroups --with-machines=/etc/pdsh/machines

[root@server pdsh-2.29]# make

[root@server pdsh-2.29]# make install

在執行configure階段,「--with-ssh」參數表示啓用ssh模塊,其餘參數都有相似的含義,而「--with-dshgroups」表示啓用主機組支持,啓用此參數後,就能夠將一組主機列表寫入一個文件並放到~/.dsh/group或/etc/dsh/group目錄下,而後經過pdsh的「-g」參數進行調用。最後的參數「--with-machines」是「--with-dshgroups」參數的擴展,經過將全部要管理的主機列表都寫入指定的/etc/pdsh/machines文件中,接着經過pdsh的「-a」參數調用,最終完成全部主機的便捷管理。

完成安裝後,能夠經過「pdsh –V」查看pdsh的版本號以及可以使用的模塊信息,操做以下:

[opsuser@server ~]$ pdsh -V

pdsh-2.29

rcmd modules: ssh,rsh,exec (default: rsh)

misc modules: machines,dshgroup

此外,也能夠經過「pdsh -L」來顯示當前全部加載的模塊信息。在pdsh安裝完成後,還有一個可用的工具pdcp,後面將詳細講述pdsh和pdcp兩個命令的用法。

 

二、pdsh的語法介紹

 

安裝pdsh完成後,經過執行「pdsh –h」和「pdcp –h」便可獲得兩個命令的完整用法,因爲兩個命令的參數大同小異,所以這裏以pdsh命令爲主介紹一些經常使用的參數及含義。下表是pdsh經常使用的參數及其含義。

 

-w host,host 指定遠程主機,能夠指定多個,每一個主機用逗號隔開,host能夠是主機名也能夠是IP地址。此參數很是靈活,經常使用的形式有:

pdsh -w ssh:user001,ssh:user002,ssh:user003 "date"

此命令用來查看user00一、user00二、user003主機上的時間,其中ssh表示在遠程主機上執行命令的形式,默認是rsh。

pdsh -w ssh:user00[1-10] "date"

此命令用於在user001到user0010上執行date命令。

pdsh -w ssh:user0[10-31],/1$/ "uptime"

此命令在選擇遠程主機時使用了正則表達式,表示在user010到user031中選擇以1結尾的主機名,即在user0十一、user02一、user031上執行uptime命令

 

-R 指定使用rcmd的模塊名,默認是rsh。若是要選擇ssh,能夠經過以下方式指定:

pdsh -R ssh -w user00[1-10] "date"

 

-l 指定在遠程主機上使用的用戶名稱。例如:

pdsh -R ssh -l opsuser -w user00[1-9] "date"

 

-x 此參數用來排除某些或某個主機,例如:

pdsh -R ssh -l opsuser -w user00[1-9] -x user005,user007 "date"

 

-t 指定鏈接遠程主機的超時時間,以秒爲單位,默認是10秒,能夠經過此參數修改默認值,例如:pdsh -R ssh -w slave000[1-9]  -t 15  "date"

 

-u 設置遠程命令執行的超時時間,以秒爲單位,以ssh方式鏈接時,默認時間爲無限

 

-f 設置同時鏈接到遠程主機的個數

-N 此參數用來關閉遠程主機所返回結果中的主機名顯示

-a 經過此參數能夠指定全部的遠程主機,設置此參數後,pdsh默認會查看/etc/machines文件中的主機列表,要改變此路徑,在編譯pdsh時經過「--with-machines」參數指定便可

-g 此參數用來指定一組遠程主機,在編譯pdsh時能夠經過「--with-dshgroups」參數來激活此選項,默承認以將一組主機列表寫入一個文件中並放到本地主機的~/.dsh/group或/etc/dsh/group目錄下,這樣就能夠經過「-g」參數調用了。例如:pdsh -R ssh -g userhosts "date",其中「userhosts」是一個主機列表文件,能夠將此文件放在~/.dsh/group或/etc/dsh/group目錄下

-X 此參數用來排除指定組內的全部主機,常常與「-a」參數一塊兒使用。例如:

pdsh -R ssh -a -X userhosts  "date"

-q 此參數能夠列出pdsh執行時的一些配置信息

-V 此參數能夠查看軟件的版本信息以及可用的模塊信息

相關文章
相關標籤/搜索