pssh系列命令詳解

安裝

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
相關文章
相關標籤/搜索