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