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 此參數能夠查看軟件的版本信息以及可用的模塊信息