1. 程式人生 > >pssh一個微量級自動化工具

pssh一個微量級自動化工具

ssh 可選 -a 必須 管理 系統 for sed 信息

一、pssh簡介

pssh是一個python編寫可以在多臺服務器上執行命令的工具,也可實現文件復制。pssh需要通過ssh的key驗證來管理主機,其不能很好的支持密碼驗證。用過epel源的pssh包來安裝

二、pssh選項

pssh [OPTIONS] command […]

–version:查看版本
-h:主機文件列表,內容格式”[user@]host[:port]”
-H:主機字符串,內容格式”[user@]host[:port]”
-l:登錄使用的用戶名
-p:並發的線程數【可選】
-o:輸出的文件目錄【可選】
-e:錯誤輸入文件【可選】
-t:TIMEOUT 超時時間設置,0無限制【可選】
-O:SSH的選項
-v:詳細模式
-A:手動輸入密碼模式
-x:額外的命令行參數使用空白符號,引號,反斜線處理
-X:額外的命令行參數,單個參數模式,同-x
-i:每個服務器內部處理信息輸出
-P:打印出服務器返回信息

常用選項:-H 、-h 、-i、

三、示例

joker ~ #  pssh -H [email protected] -i sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config  
[1] 02:56:19 [SUCCESS] [email protected]

-H表示指定主機
-i表示在本地輸出執行結果


joker ~ # echo -e "172.18.30.254\n172.18.30.253" >ip.txt 
joker ~ # cat ip.txt 
172.18.30.254
172.18.30.253
joker ~ # pssh -h ip.txt -i echo "ok"
[1] 02:58:29 [SUCCESS] 172.18.30.254
ok
[2] 02:58:29 [SUCCESS] 172.18.30.253
ok

通過  -h選項,讀取ip.txt文件(批量保存ip的列表),達到批量執行任務的目的。


如果鑰調用遠程的變量,那麽需要把需要在遠程主機執行的命令用單引號引起來,否則調用的是本地的變量

  1. joker ~ # pssh -h ip.txt -i echo "ok"
  2. [1] 02:58:29 [SUCCESS] 172.18.30.254
  3. ok
  4. [2] 02:58:29 [SUCCESS] 172.18.30.253
  5. ok
  6. joker ~ # pssh -h ip.txt -i echo "$HOSTNAME"
  7. [1] 03:01:25 [SUCCESS] 172.18.30.254
  8. joker
  9. [2] 03:01:25 [SUCCESS] 172.18.30.253
  10. joker
  11. joker ~ # pssh -h ip.txt -i echo ‘$HOSTNAME‘
  12. [1] 03:01:34 [SUCCESS] 172.18.30.254
  13. joker-6-01
  14. [2] 03:01:34 [SUCCESS] 172.18.30.253
  15. newhostname

如果要使用基於密碼的方式去連接主機可以加-A選項,但是這個工具只會提示輸入一次密碼,也就是說,在批量執行的過程中,所有的主機密碼都是相同的,在工作中,顯然這樣是不合要求的,所以這種方式一般是不使用的。

四、基於pssh的pscp.pssh

功能是將本地文件批量復制到遠程主機

Pscp-pssh選項

-v 顯示復制過程
-a 復制過程中保留常規屬性
-r 遞歸復制目錄

joker ~ # pscp -h ip.txt /root/ip.txt ~/   #gentoo系統和centos的有些區別,但是參數格式是一樣的
[1] 03:07:43 [SUCCESS] 172.18.30.254
[2] 03:07:43 [SUCCESS] 172.18.30.253

將本地ip.txt 拷貝到遠程目標主機上

五、基於pssh的pslurp.pssh命令

功能是將遠程主機的文件批量復制到本地

Pslurp-pssh選項

-L 指定從遠程主機下載到本機的存儲的目錄,local是下載到本地後的名稱
-r 遞歸復制目錄

joker ~ # pslurp -h ip.txt -L /app/ /etc/passwd passwd
[1] 03:15:43 [SUCCESS] 172.18.30.254
[2] 03:15:43 [SUCCESS] 172.18.30.253

joker ~ # cd /app/
joker /app # ls -l
total 0
drwxr-xr-x 2 root root 42 Jan  9 03:15 172.18.30.253
drwxr-xr-x 2 root root 42 Jan  9 03:15 172.18.30.254
joker /app # cd 172.18.30.254
joker /app/172.18.30.254 # ls
passwd

-L指定保存到本地的哪個目錄
倒數第二個參數表示要在在遠程主機下載的文件
paswd表示要更換的名字(必須有這一項,否則會報錯)

pssh一個微量級自動化工具