運維工具pssh和pdsh安裝和使用


1. pssh安裝與使用

1.1 pssh安裝

[root@server]# wget http://peak.telecommunity.com/dist/ez_setup.py
[root@server]# python ez_setup.py
[root@server]# wget http://parallel-ssh.googlecode.com/files/pssh-2.2.2.tar.gz
[root@server]# tar zxvf pssh-2.2.2.tar.gz
[root@server]# cd pssh-2.2.2
[root@server]# python setup.py install

1.2 pssh使用

假設ssh已做好SSH信任,ssh信任請參看:關於ssh命令研究以及SSH信任詳解

pssh工具包主要有5個程序:

  • 1 pssh 多主機並行運行命令
[root@server pssh-2.2.2]# pssh -P -h test.txt uptime
192.168.9.102: 14:04:58 up 26 days, 17:05, 0 users, load average: 0.07, 0.02, 0.00
192.168.9.102: [1] 14:04:58 [SUCCESS] 192.168.9.102 9922
192.168.8.171: 14:04:59 up 35 days, 2:01, 6 users, load average: 0.00, 0.00, 0.00
192.168.8.171: [2] 14:04:59 [SUCCESS] 192.168.8.171 22
192.168.9.104: 14:04:59 up 7 days, 20:59, 0 users, load average: 0.10, 0.04, 0.01
192.168.9.104: [3] 14:04:59 [SUCCESS] 192.168.9.104 9922
[root@server pssh-2.2.2]# cat test.txt
192.168.9.102:9922
192.168.9.104:9922
192.168.8.171:22 
//注意我的端口號不僅是默認的22, 假如想將輸出重定向到一個文件 加-o file 選項
  • 2 pscp 把文件並行地復制到多個主機上
[root@server pssh-2.2.2]# pscp -h test.txt /etc/sysconfig/network /tmp/network 
//標示將本地的/etc/sysconfig/network傳到目標服務器的/tmp/network
  • 3 prsync 使用rsync協議從本地計算機同步到遠程主機
[root@server ~]# pssh -h test.txt -P mkdir /tmp/etc
[root@server ~]# prsync -h test.txt -l dongwm -a -r /etc/sysconfig /tmp/etc
//標示將本地的/etc/sysconfig目錄遞歸同步到目標服務器的/tmp/etc目錄下,並保持原來的時間戳
  • 4 pslurp 將文件從遠程主機復制到本地,和pscp方向相反:
[root@server ~]# pslurp -h test.txt -L /tmp/test -l root /tmp/network test 
//標示將目標服務器的/tmp/network文件復制到本地的/tmp/test目錄下,並更名為test
[1] 14:53:54 [SUCCESS] 192.168.9.102 9922
[2] 14:53:54 [SUCCESS] 192.168.9.104 9922
[root@server ~]# ll /tmp/test/192.168.9.10
192.168.9.102/ 192.168.9.104/
[root@server ~]# ll /tmp/test/192.168.9.102/
總計 4.0K
-rw-r--r-- 1 root root 60 2011-04-22 14:53 test
[root@server ~]# ll /tmp/test/192.168.9.104/
總計 4.0K
-rw-r--r-- 1 root root 60 2011-04-22 14:53 test
  • 5 pnuke 並行在遠程主機殺進程:
[root@server ~]# pnuke -h test.txt syslog
//殺死目標服務器的syslog進程,只要ps進程中出現相關詞語 都能殺死
[1] 15:05:14 [SUCCESS] 192.168.9.102 9922
[2] 15:05:14 [SUCCESS] 192.168.9.104 9922

2. pdsh安裝與使用

  • 2.1 pdsh的安裝過程

pdsh的安裝非常簡單,有rpm包和源碼包兩種方式,大家可根據自己的喜好選擇適合自己的安裝方式。可以在http://code.google.com/p/pdsh/ 下載最新的源碼包進行編譯安裝,目前最新版本為pdsh-2.29,這里下載的源碼包為pdsh-2.29.tar.bz2。

編譯安裝過程如下:

[root@server ~]# tar jxvf pdsh-2.29.tar.bz2
[root@server ~]# cd pdsh-2.29
[root@server pdsh-2.29]#./configure --with-ssh --with-rsh --with-mrsh --with-mqshell --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”參數調用,最終完成所有主機的便捷管理。

[opsuser@server ~]# pdsh -V
pdsh-2.29
rcmd modules: ssh,rsh,exec (default: rsh)
misc modules: machines,dshgroup
  • 2.2 pdsh的語法介紹

安裝pdsh完成后,通過執行pdsh –h
pdcp –h即可得到兩個命令的完整用法,由於兩個命令的參數大同小異,因此這里以pdsh命令為主介紹一些常用的參數及含義。

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

[root@server ~]# pdsh -w ssh:user001,ssh:user002,ssh:user003 "date"

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

[root@server ~]# pdsh -w ssh:user00[1-10] "date"

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


[root@server ~]#pdsh -w ssh:user0[10-31],/1$/ "uptime"

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

-R 指定使用rcmd的模塊名,默認是rsh。如果要選擇ssh,可以通過如下方式指定:

[root@server ~]#pdsh -R ssh -w user00[1-10] "date"

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

[root@server ~]#pdsh -R ssh -l opsuser -w user00[1-9] "date"

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

[root@server ~]#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”參數一起使用。例如:

[root@server ~]#pdsh -R ssh -a -X userhosts "date"

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM