时时彩开奖百度彩票:使用PSSH批量管理Linux服務器

重庆时时彩开奖查看 www.tdqkyu.com.cn 日期: 2019-05-15 23:43:53 人氣: - 評論: 0

PSSH是一款開源的軟件,使用蟒實現,用于批量的ssh操作大批量機器; PSSH是一個可以在多臺服務器上執行命令的工具,同時支持拷貝文件,是同類工具中很出色的;比起對于循環的做法,我更推薦使用PSSH使用PSSH的前提是:必須在本機與其他服務器上配置好密鑰認證訪問(即通過ssh信任關系)。

下面就說下使用PSSH進行批量操作的記錄:

1)安裝PSSH 
可以蔭直接安裝:

[root @ bastion-IDC~] #yum install -y pssh

2)PSSH用法

[[email protected] ~]# pssh --help

-h執行命令的遠程
主機列表文件  -H user @ ip:port文件內容格式[user @] host [:port]  
-l遠程機器的用戶名  
-p一次最大允許多少連接  
-o輸出內容重定向到一個文件  
-e執行錯誤重定向到一個文件  
-t設置命令執行的超時時間  
-A提示輸入密碼并且把密碼傳遞給ssh(注意這個參數添加后只是提示作用,隨便輸入或者不輸入直接回車都可以)  
-O設置ssh參數的具體配置,參照ssh_config配置文件  
-x傳遞多個SSH命令,多個命令用空格分開,用引號括起來  
-X同-x但是一次只能傳遞一個命令  
-i顯示標準輸出和標準錯誤在每臺主機執行完畢后  
-I讀取每個輸入命令,并傳遞給SSH網求允許進程命令腳本傳送到標準輸入側

3)PSSH實例說明

[[email protected] ~]# cat hosts.txt    //列表文件內的信息格式是?!癐P:端口”,如果本機和遠程機器使用的SSH端口一致,則可以省去端口,直接用IP就行不過建議還是將端口都帶上為好
192.168 .1.101:22 
192.168.1.109:22 
192.168.1.118:25791 
192.168.1.105:25791 
如上四臺機器放在一個列表文件hosts.txt內,本機已經和這四臺機器做了ssh無密碼登陸的信任關系
注意:列表文件內的機器必須提前和本機做好SSH信任關系,如果沒有做的話,那么PSSH批量執行時,輪到這臺沒有做信任關系的機器時就不會執行。

一)批量執行命令

[root @ bastion-IDC~] #pssh -h hosts.txt -l root -i'uptime' 
[1] 16:05:48 [SUCCESS] 192.168.1.105 
03:03:25 up 79 days,13:44, 0位用戶,平均負載:0.04,0.01,0.00 
[2] 16:05:48 [SUCCESS] 192.168.1.118 
03:03:32 up 75 days,15:
27,4位用戶,平均負載:0.96,0.74,0.45 Stderr :地址192.168.1.118映射到localhost,但這不會映射回地址 - 可能是BREAK-IN ATTEMPT!
[3] 16:05:48 [SUCCESS] 192.168.1.109 
03:03:25 up 61 days,
21:56,2 users,load average:0.02,0.06,0.18 Stderr:Address 192.168.1.102 map to localhost,but this沒有映射回地址 - 可能突破了嘗試!
[4] 16:05:48 [SUCCESS] 192.168.1.101 16:03:17 
35天,23:45,1位用戶,平均負載:0.03,0.04,0.01
Stderr:地址192.168.1.101映射到localhost,但這不會映射回地址 - 可能是BREAK-IN ATTEMPT!

如果添加-A參數,那么即使提前做了SSH信任關系,還是會提示輸入密碼!

[root @ bastion-IDC~] #pssh -h hosts.txt -l root -i -A'uptime' 
警告:如果其他人擁有超級用戶
權限或訪問您的帳戶,請不要輸入您的密碼。
密碼://注意這個參數添加后只是提示作用,可以在此隨便輸入或者不輸入直接回車都可以
[1] 16:08:25 [SUCCESS] 192.168.1.105 
03:06:03 79天,13 :
46,0位用戶,平均負載:0.00,0.00,0.00 [2] 16:08:25 [SUCCESS] 192.168.1.109 
03:06:03 up 61 days,21:59,2位用戶,平均負載:0.00,0.04 ,0.15 
Stderr:地址192.168.1.102映射到localhost,但是這不會映射回地址 - 可能是BREAK-IN ATTEMPT!
[3] 16:08:25 [SUCCESS] 192.168.1.101 
16:05:54 35天,23:47,1位用戶,平均負載:0.00,0.02,0.00
Stderr:地址192.168.1.101映射到localhost,但這不會映射回地址 - 可能是BREAK-IN ATTEMPT!
[4] 16:08:25 [SUCCESS] 192.168.1.118 
03:06:10最多75天,
15:29,4位用戶,平均負載:0.85,0.78,0.51 Stderr:地址192.168.1.118映射到localhost,但是這個沒有映射回地址 - 可能突破了嘗試!
[root @ bastion-IDC~] #pssh -h hosts.txt -l root -i -t 10 -o /root/pssh.log'uptime'&date'[1 
] 17:01:02 [SUCCESS] 192.168.1.109 
03:58:33最多79天,5:58,1位用戶,平均負載:
0.00,0.00,0.00 Wed Feb 8 03:58:33 EST 2017 
[2] 17:01:02 [SUCCESS] 192.168.1.105 
03: 58:40 up 79 days,14:39,1位用戶,平均負載:
0.00,0.00,0.00 Wed Feb 8 03:58:40 EST 2017
[3] 17:01:02 [SUCCESS] 192.168.1.101 
16:58:31最多36天,40分鐘,1位用戶,平均負載:
0.10,0.03,0.01 Wed Feb 8 16:58:31 CST 2017 
Stderr:Address 192.168.1.101映射到localhost,但這不會映射回地址 - 可能是BREAK-IN ATTEMPT!
[4] 17:01:02 [SUCCESS] 192.168.1.118 
03:58:47上升75天,16:22,3位用戶,平均負載:
0.20,0.21,0.31 Wed Feb 8 03:58:47 EST 2017 
Stderr:地址192.168.1.118映射到localhost,但這不會映射回地址 - 可能是BREAK-IN ATTEMPT!
[root @ bastion-IDC~] #ll /root/pssh.log/ 
total 16 
-rw-r - r--。1 root root 100 Feb 8 17:01 192.168.1.101 
-rw-r - r--。1 root root 99 Feb 8 17:01 192.168.1.105
-rw-R - R--。1 root root 99 Feb 8 17:01 192.168.1.109 
-rw-r - r--。1 root root 100 Feb 8 17:01 192.168.1.118

b)中批量上傳文件或目錄(pscp.pssh命令)
批量上傳本地文件/mnt/test.file到遠程服務器上的/ TMP目錄:

[root @ bastion-IDC~] #pscp.pssh -l root -h hosts.txt /mnt/test.file / tmp / 
[1] 16:18:05 [SUCCESS] 192.168.1.105 
[2] 16:18: 05 [成功] 192.168.1.109 
[3] 16:18:05 [SUCCESS] 192.168.1.101 
[4] 16:18:05 [SUCCESS] 192.168.1.118

批量上傳本地文件/mnt/test.file,/mnt/aa.file,/mnt/bb.file到遠程服務器上的/ tmp目錄目錄:

[root @ bastion-IDC~] #pscp.pssh -l root -h hosts.txt /mnt/test.file /mnt/aa.file /mnt/bb.file / tmp / 
[1] 16:22:50 [成功] 192.168.1.109 
[2] 16:22:50 [SUCCESS] 192.168.1.105 
[3] 16:22:50 [SUCCESS] 192.168.1.118 
[4] 16:22:50 [SUCCESS] 192.168.1.101

或者:

[root @ bastion-IDC~] #pscp.pssh -l root -h hosts.txt /mnt/{test.file,aa.file,bb.file} / tmp / 
[1] 16:23:44 [SUCCESS] 192.168.1.109 
[2] 16:23:44 [SUCCESS] 192.168.1.105 
[3] 16:23:44 [SUCCESS] 192.168.1.101 
[4] 16:23:44 [SUCCESS] 192.168.1.118

批量上傳本地目錄的/ mnt /鐘到遠程服務器上的/ TMP目錄(上傳目錄需要添加-r參數):

[root @ bastion-IDC~] #pscp.pssh -l root -h hosts.txt -r / mnt / zhong / tmp / 
[1] 16:19:36 [SUCCESS] 192.168.1.109 
[2] 16:19: 36 [成功] 192.168.1.105 
[3] 16:19:36 [成功] 192.168.1.101 
[4] 16:19:36 [成功] 192.168.1.118

批量上傳本地目錄的/ mnt /鐘,到/ mnt / AA,到/ mnt / VV到遠程服務器上的/ TMP目錄

[root @ bastion-IDC~] #pscp.pssh -l root -h hosts.txt -r / mnt / zhong / mnt / aa / mnt / vv / tmp / 
[1] 16:21:02 [SUCCESS] 192.168。 1.105 
[2] 16:21:02 [SUCCESS] 192.168.1.109 
[3] 16:21:02 [SUCCESS] 192.168.1.101 
[4] 16:21:02 [SUCCESS] 192.168.1.118

或者:

[root @ bastion-IDC~] #pscp.pssh -l root -h hosts.txt -r / mnt / {zhong,aa,vv} / tmp / 
[1] 16:22:00 [SUCCESS] 192.168.1.109 
[ 2] 16:22:00 [SUCCESS] 192.168.1.105 
[3] 16:22:00 [SUCCESS] 192.168.1.101 
[4] 16:22:00 [SUCCESS] 192.168.1.118

c)中批量下載文件或目錄(pslurp命令)
批量下載服務器上的某文件到本地,不用擔心重名問題,因為PSSH已經建立了以文件列表內的IP為名稱的目錄來存放下載的文件

[root @ bastion-IDC~] #pslurp -l root -h hosts.txt / etc / hosts。
[1] 16:32:01 [SUCCESS] 192.168.1.109 
[2] 16:32:01 [SUCCESS] 192.168.1.105 
[3] 16:32:01 [SUCCESS] 192.168.1.101 
[4] 16:32:01 [SUCCESS] 192.168.1.118 
[root @ bastion-IDC~] #ll 
total 123 
drwxr-xr-x。2 root root 4096 Feb 8 16:32 192.168.1.101 
drwxr-xr-x。2 root root 4096 Feb 8 16:32 192.168.1.105 
drwxr-xr-x。2 root root 4096 Feb 8 16:32 192.168.1.109 
drwxr-xr-x。2 root root 4096 Feb 8 16:32 192.168.1.118 
[root @ bastion-IDC~] #ll 192.168.1.101 
total 4 
-rw-r - r--。1 root root 224 Feb 8 16:32 hosts 
[root @ bastion-IDC~] #ll 192.168.1.109 
total 4 
-rw-r - r--。1 root root 252 Feb 8 16:32 hosts
[root @ bastion-IDC~] #ll 192.168.1.105 
總計4 
-rw-r - r--。1 root root 252 Feb 8 16:32 hosts 
[root @ bastion-IDC~] #ll 192.168.1.118 
total 4 
-rw-r - r--。1 root root 212 Feb 8 16:32 hosts

另外特別注意:
上面的批量下載操作,只能下載到本地的當前目錄下,不能在命令中跟指定的路徑:

[root @ bastion-IDC~] #pslurp -l root -h hosts.txt / etc / hosts / mnt / 
[1] 16:34:14 [FAILURE] 192.168.1.109退出錯誤代碼1 
[2] 16:34 :14 [FAILURE] 192.168.1.105退出錯誤代碼1 
[3] 16:34:14 [FAILURE] 192.168.1.101退出錯誤代碼1 
[4] 16:34:14 [FAILURE] 192.168.1.118退出錯誤代碼1

要想下載到本機的到/ mnt目錄下,正確的做法是先切換到的/ mnt目錄下,然后再執行下載命令:(列表文件要跟全路徑)

[root @ bastion-IDC~] #cd / mnt / 
[root @ bastion-IDC mnt] #pslurp -l root -h /root/hosts.txt / etc / hosts ./ 
[1] 16:34:34 [SUCCESS ] 192.168.1.109 
[2] 16:34:34 [SUCCESS] 192.168.1.105 
[3] 16:34:34 [SUCCESS] 192.168.1.118 
[4] 16:34:34 [SUCCESS] 192.168.1.101 
[root @ bastion -IDC mnt] #ll 
總共16 
drwxr-xr-x。2 root root 4096 Feb 8 16:34 192.168.1.101 
drwxr-xr-x。2 root root 4096 Feb 8 16:34 192.168.1.105 
drwxr-xr-x。2 root root 4096 Feb 8 16:34 192.168.1.109 
drwxr-xr-x。2 root root 4096 Feb 8 16:34 192.168.1.118

上面是批量下載文件,要是批量下載目錄,只需要添加一個-r參數即可!

[root @ bastion-IDC mnt] #pslurp -l root -h /root/hosts.txt -r / home / ./ 
[1] 16:39:05 [SUCCESS] 192.168.1.109 
[2] 16:39:05 [SUCCESS] 192.168.1.105 
[3] 16:39:05 [SUCCESS] 192.168.1.101 
[4] 16:39:05 [SUCCESS] 192.168.1.118 
[root @ bastion-IDC mnt] #ll 192.168.1.101 
共8 
drwxr -xr-X。6 root root 4096 Feb 8 16:39 home 
-rw-r - r--。1 root root 224 Feb 8 16:38 hosts 
[root @ bastion-IDC mnt] #ll 192.168.1。* 
192.168.1.101:total 

drwxr-xr-x。6 root root 4096 Feb 8 16:39 home 
-rw-r - r--。1 root root 224 Feb 8 16:38 hosts 
192.168.1.105:total 

drwxr-xr-x。4 root root 4096 Feb 8 16:39 home 
-rw-r - r--。1 root root 252 Feb 8 16:38 hosts
192.168.1.109:
總共8 
drwxr-xr-x。4 root root 4096 Feb 8 16:39 home 
-rw-r - r--。1 root root 252 Feb 8 16:38 hosts 
192.168.1.118:total 

drwxr-xr-x。3 root root 4096 Feb 8 16:39 home 
-rw-r - r--。1 root root 212 Feb 8 16:38 hosts

d)批量同步(prsync命令)
同步本機的/ mnt /測試目錄下的文件或目錄到遠程機器的到/ mnt /測試路徑下

[root @ bastion-IDC~] #prsync -l root -h hosts.txt -r / mnt / test / / mnt / test / 
[1] 16:46:41 [SUCCESS] 192.168.1.109 
[2] 16:46 :41 [SUCCESS] 192.168.1.105 
[3] 16:46:41 [SUCCESS] 192.168.1.118 
[4] 16:46:41 [SUCCESS] 192.168.1.101

同步本機的/ mnt /測試目錄下的文件或目錄到遠程機器的到/ mnt路徑下

[root @ bastion-IDC~] #prsync -l root -h hosts.txt -r / mnt / test / / mnt / 
[1] 16:47:40 [SUCCESS] 192.168.1.109 
[2] 16:47:40 [SUCCESS] 192.168.1.105 
[3] 16:47:45 [SUCCESS] 192.168.1.101 
[4] 16:47:46 [SUCCESS] 192.168.1.118

注意:
上面批量同步目錄操作是將本機對應目錄數據同步到遠程機器上,遠程機器上對于目錄下多余的文件也會保留(不會刪除多余文件)

同理,批量同步文件操作,去掉-r參數,
注意:同步文件的時候,其實就是完全覆蓋,遠程機器對應文件內的文件會被全部替換!
如下:
同步本機的到/ mnt /測試/文件文件內容到遠程服務器的/ mnt /測試/文件文件內

[root @ bastion-IDC~] #prsync -l root -h hosts.txt / mnt / test / file / mnt / test / file  
[1] 16:53:54 [SUCCESS] 192.168.1.109 
[2] 16:53 :54 [SUCCESS] 192.168.1.105 
[3] 16:53:54 [SUCCESS] 192.168.1.101 
[4] 16:53:54 [SUCCESS] 192.168.1.118 
[root @ bastion-IDC~] #prsync -l root - h hosts.txt / mnt / test / file / mnt / aaa 
[1] 16:54:03 [SUCCESS] 192.168.1.109 
[2] 16:54:03 [SUCCESS] 192.168.1.105 
[3] 16:54:03 [成功] 192.168.1.101 
[4] 16:54:04 [SUCCESS] 192.168.1.118

E)批量殺遠程機器上的進程(pnuke命令)
比如批量殺掉遠程機器上的nginx的進程

[root @ bastion-IDC~] #pnuke -h hosts.txt -l root nginx 
[1] 17:09:14 [SUCCESS] 192.168.1.109  
[2] 17:09:14 [SUCCESS] 192.168.1.105  
[3] 17:09:15 [SUCCESS] 192.168.1.118  
[4] 17:09:15 [SUCCESS] 192.168.1.101


?