pssh提供OpenSSH和相關工具的並行版本。包括pssh,pscp,prsync,pnuke和pslurp。該項目包括psshlib,能夠在自定義應用程序中使用。pssh是python寫的能夠併發在多臺機器上批量執行命令的工具,它的用法能夠媲美ansible的一些簡單用法,執行起來速度比ansible快它支持文件並行複製,遠程命令執行,殺掉遠程主機上的進程等等。殺手鐗是文件並行複製,,當進行再遠程主機批量上傳下載的時候,最好使用它。pssh用於批量ssh操做大批量機器;pssh是一個能夠在多臺服務器上執行命令的工具,同時支持拷貝文件,是同類工具中很出色的;比起for循環的作法,更推薦使用pssh! (注意須要安裝 python 2.4 或以上版本)python
下面是直接從源碼進行編譯安裝的步驟,安裝過程很快nginx
wget https://pypi.python.org/packages/60/9a/8035af3a7d3d1617ae2c7c174efa4f154e5bf9c24b36b623413b38be8e4a/pssh-2.3.1.tar.gz tar xf pssh-2.3.1.tar.gz -C /usr/local cd /usr/local/pssh-2.3.1/ python setup.py install
pssh --help
能夠查看命令參數選項:shell
-l 遠程機器的用戶名 -p 一次最大容許多少鏈接 -o 輸出內容重定向到一個文件 -e 執行錯誤重定向到一個文件 -t 設置命令執行的超時時間 -A 提示輸入密碼而且把密碼傳遞給ssh(注意這個參數添加後只是提示做用,隨便輸入或者不輸入直接回車均可以,能夠結合sshpass -p password使用) -O 設置ssh參數的具體配置,參照ssh_config配置文件 -x 傳遞多個SSH 命令,多個命令用空格分開,用引號括起來 -X 同-x 可是一次只能傳遞一個命令 -i 顯示標準輸出和標準錯誤在每臺host執行完畢後 -I 讀取每一個輸入命令,並傳遞給ssh進程 容許命令腳本傳送到標準輸入
pssh、pscp、prsync、pnuke和pslurp的具體使用:安全
#注:在使用工具前,確保主機間作了密鑰認證,不然沒法實現自動化,固然咱們可使用sshpass(yum install sshpass)配合pssh -A參數實現自動輸入密碼,但這要保證多臺主機的密碼相同,同時還要注意若是known_hosts沒有信任遠程主機,那麼命令執行會失敗,能夠加上-O StrictHostKeyChecking=no參數解決,ssh能用的選項pssh也能用 # 集羣剛裝好系統處於原始狀態,可使用下面命令來生成其餘機器的ssh祕鑰並將各機器的rsa公鑰添加到本機 sshpass -p password pssh -I -A -O StrictHostKeyChecking=no -h ip.txt -l brooksj -i "ssh-ketgen" # 而後本機回車10次幫助各機器生成ssh祕鑰,password爲其它機器的統一密碼 sshpass -p password pssh -A -O StrictHostKeyChecking=no -h ip.txt -l brooksj -i "ssh-copy-id localhost-ip" # localhost-ip改爲你本機的ip #pssh 遠程批量執行命令 pssh -h ip.txt -P "uptime" #-h 後面接主機ip文件,文件數據格式[user@]host[:port] #-P 顯示輸出內容 #若是沒辦法密鑰認證.能夠採用下面方法,但不是很安全 sshpass -p 123456 pssh -A -h ip.txt -i "uptime" #pscp 並行傳輸文件到遠端 #傳文件,不支持遠程新建目錄 pscp -h ip.txt test.py /tmp/dir1/ #傳目錄 pscp -r -h ip.txt test/ /tmp/dir1/ #prsync 並行傳輸文件到遠端 #傳文件,支持遠程新建目錄,即目錄不存在則新建 prsync -h ip.txt test.py /tmp/dir2/ #傳目錄 prsync -r -h ip.txt test/ /tmp/dir3/ #pslurp從遠程拉取文件到本地,在本地自動建立目錄名爲遠程主機ip的目錄,將拉取的文件放在對應主機IP目錄下 #格式:pslurp -h ip.txt -L <本地目錄> <遠程目錄/文件> <本地重命名> #拉取文件 pslurp -h ip.txt -L /root/ /root/1.jpg picture ll /root/172.16.1.13/picture -rw-r--r-- 1 root root 148931 Jan 9 15:41 /root/172.16.1.13/picture #拉取目錄 pslurp -r -h ip.txt -L /root/ /root/test temp ll -d /root/172.16.1.13/temp/ drwxr-xr-x 2 root root 23 Jan 9 15:49 /root/172.16.1.13/temp/ #pnuke:遠程批量killall pnuke -h ip.txt nginx