一、pssh簡介及安裝
首先我們來了解下什麼是pssh,它是幹嘛用的?pssh是一個python編寫可以在多臺伺服器上執行命令的工具,也可以實現檔案複製。換而言之就是一個批次管理多臺伺服器的一個小工具。常常我們有這樣的經歷,就是需要在很多臺主機上執行同一命令,在以前我們需要編寫一個指令碼,然後寫一個迴圈,然後寫上要執行的命令,感覺挺麻煩的,有了pssh這個工具,很多事情都不需要我們編寫指令碼去完成了,用pssh管理多臺主機,就好像在自己主機上執行命令一樣,我們不再編寫指令碼就可以實現管理多臺主機。接下來我們來安裝使用pssh吧
1、檢視pssh包資訊
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
[root@
test
~]
# yum info pssh Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile Available Packages Name : pssh Arch : noarch Version : 2.3.1 Release : 5.el6 Size : 50 k Repo : epel Summary : Parallel SSH tools URL : http:
//code
.google.com
/p/parallel-ssh/ License : BSD Description : This package provides various parallel tools based on
ssh
and
scp
.
: Parallell version includes:
: o
ssh
: pssh
: o
scp
: pscp
: o nuke : pnuke
: o
rsync
: prsync
: o slurp : pslurp [root@
test
~]
# |
說明:可以看到pssh這個包主要功能就是提供了各種基於ssh和scp的命令列工具,包裡包含了pssh、pscp、pnuke、prsync、pslurp,這五個工具。這個包來源epel,所以在檢視和安裝之前請先配好自己的epel源。
2、安裝pssh包
1 |
[root@
test
~]
# yum install -y pssh |
二、pssh工具的使用
pssh命令選項有如下:
--version:檢視版本資訊
1
2
3 |
[root@
test
~]
# pssh --version 2.3.1 [root@
test
~]
# |
-h:主機檔案列表,內容格式"[user@]host[:port]"
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
[root@docker
test
]
#cat > iplist << EOF > root@192.168.0.128 > root@192.168.0.217 > qiuhom@192.168.0.218 > EOF [root@docker
test
]
#cat iplist root@192.168.0.128 root@192.168.0.217 qiuhom@192.168.0.218 [root@docker
test
]
#pssh -h iplist 'ls -l' [1] 22:08:50 [SUCCESS] root@192.168.0.128 [2] 22:08:50 [SUCCESS] root@192.168.0.217 [3] 22:08:50 [SUCCESS] qiuhom@192.168.0.218 [root@docker
test
]
# |
說明:以上命令的意思是在我iplist定義的主機上執行ls -l命令,這裡要說一下,pssh預設是基於key認證連線遠端主機,所以我在執行上面的命令沒有輸入口令。
-H:主機字串,內容格式"[user@]host[:port]"。
1
2
3 |
[root@docker ~]
#pssh -H 192.168.0.128 'ls /' [1] 22:17:40 [SUCCESS] 192.168.0.128 [root@docker ~]
# |
說明:-H是指定某一臺主機的選項,當然要指定多臺主機,可以用-H一一指定,也可以用-H 指定很多主機,但是每個主機用空格隔開,且多個主機要用引號引起來。
-A:手動輸入密碼模式
1
2
3
4
5
6 |
[root@docker ~]
#pssh -H qiuhom@192.168.0.99:41319 -A 'ls' Warning:
do
not enter your password
if
anyone
else
has superuser privileges or access to your account. Password: [1] 22:40:20 [SUCCESS] qiuhom@192.168.0.99:41319 [root@docker ~]
# |
說明:pssh預設是用ssh的key驗證來執行命令,如果我們要管理沒有做SSHkey驗證的主機,那麼我們可以用-A來指定手動輸入密碼模式,有關ssh基於key認證登入,請參考本人部落格 https://www.cnblogs.com/qiuhom-1874/p/11783371.html
-i:每個伺服器內部處理資訊輸出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 |
[root@docker ~]
#pssh -h test/iplist -i 'ip addr show' [1] 22:44:31 [SUCCESS] root@192.168.0.128 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link
/loopback
00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1
/8
scope host lo
inet6 ::1
/128
scope host
valid_lft forever preferred_lft forever 2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link
/ether
00:0c:29:41:ff:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.128
/24
brd 192.168.0.255 scope global eth1
inet6 fe80::20c:29ff:fe41:ffc0
/64
scope link
valid_lft forever preferred_lft forever [2] 22:44:31 [FAILURE] qiuhom@192.168.0.218 Exited with error code 127 Stderr:
bash
: ip:
command
not found [3] 22:44:31 [SUCCESS] root@192.168.0.217 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link
/loopback
00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1
/8
scope host lo
valid_lft forever preferred_lft forever
inet6 ::1
/128
scope host
valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link
/ether
00:0c:29:98:0a:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.217
/24
brd 192.168.0.255 scope global dynamic ens33
valid_lft 4184sec preferred_lft 4184sec
inet6 fe80::f565:ff52:6ab3:b9da
/64
scope link
valid_lft forever preferred_lft forever 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link
/ether
52:54:00:f8:82:a0 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1
/24
brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link
/ether
52:54:00:f8:82:a0 brd ff:ff:ff:ff:ff:ff [root@docker ~]
# |
說明:在我們不指定選項-i,pssh預設只輸出執行命令的成功與失敗狀態,並不會把執行的結果資訊列印出來。使用-i我們可以把在每臺主機上執行命令的結果和命令執行成功與否一併顯示。上面有一個centos6的主機上沒有裝iproute包所以 預設沒有ip這個命令,所以命令沒有執行成功。
-l登入使用的使用者名稱
1
2
3
4
5
6
7
8
9
10 |
[root@docker ~]
#pssh -H 192.168.0.218 -l qiuhom -i 'whoami' [1] 22:49:46 [SUCCESS] 192.168.0.218 qiuhom [root@docker ~]
#pssh -H 192.168.0.218 -l root -i -A 'whoami' Warning:
do
not enter your password
if
anyone
else
has superuser privileges or access to your account. Password: [1] 22:50:03 [SUCCESS] 192.168.0.218 root [root@docker ~]
# |
說明:-l選項就是指定以那個使用者執行命令,這個指定的使用者是遠端主機上的使用者。通常-l(小寫L) 與-A配合使用。
-o:輸出的檔案目錄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
[root@docker ~]
#pssh -o /root/dr1/ -h test/iplist 'ls /' [1] 23:02:44 [SUCCESS] root@192.168.0.128 [2] 23:02:44 [SUCCESS] qiuhom@192.168.0.218 [3] 23:02:44 [SUCCESS] root@192.168.0.217 [root@docker ~]
#tree /root/dr1/ /root/dr1/ ├── qiuhom@192.168.0.218 ├── root@192.168.0.128 └── root@192.168.0.217 0 directories, 3 files [root@docker ~]
#cat /root/dr1/qiuhom@192.168.0.218 bin boot dev etc home lib lib64 lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var [root@docker ~]
# |
說明:-o是指定把命令執行的結果輸出到以主機命名的檔案存放地。也就是說命令執行後的結果儲存在以主機命名的一個檔案裡,-o就是指定一個目錄存放這些檔案的。
-t:TIMEOUT超時時間設定,0無限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
[root@docker ~]
#pssh -t 3 -h test/iplist -i 'ping 8.8.8.8' [1] 23:09:39 [FAILURE] root@192.168.0.128 Timed out, Killed by signal 9 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=52
time
=53.5 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=52
time
=53.6 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=52
time
=53.5 ms [2] 23:09:39 [FAILURE] root@192.168.0.217 Timed out, Killed by signal 9 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=52
time
=54.2 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=52
time
=53.8 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=52
time
=53.4 ms [3] 23:09:39 [FAILURE] qiuhom@192.168.0.218 Timed out, Killed by signal 9 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=52
time
=53.2 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=52
time
=53.9 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=52
time
=53.6 ms [root@docker ~]
# |
以上就是pssh工具的常用選項說明以及用法
三、pscp.pssh命令選項說明以及使用
pscp.pssh功能是將本地檔案批次複製到遠端主機
命令用法:
1 |
pscp.pssh [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg]
local
remote |
說明:pscp.pssh以上很多選項和pssh用法是一樣的,比如-A -H -h -l等等
-v:顯示覆制過程
-r:遞迴複製目錄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
[root@docker ~]
#pscp.pssh -r -h test/iplist scripts/ /home/ [1] 23:27:57 [SUCCESS] root@192.168.0.128 [2] 23:27:57 [FAILURE] qiuhom@192.168.0.218 Exited with error code 1 [3] 23:27:57 [SUCCESS] root@192.168.0.217 [root@docker ~]
#pssh -h test/iplist -i 'ls /home/' [1] 23:28:30 [SUCCESS] root@192.168.0.128 abc admin scripts tom [2] 23:28:30 [SUCCESS] qiuhom@192.168.0.218 qiuhom testuser1 [3] 23:28:31 [SUCCESS] root@192.168.0.217 roo scripts tom [root@docker ~]
# |
說明:可以看到我們把指定目錄遞迴複製到目標主機上了,上面有一個主機失敗了,原因是那個主機上是一個普通使用者做的SSH key認證,我們用的是qiuhom這個普通使用者的身份在遠端主機上管理,因為qiuhom這個普通使用者對/home/目錄沒有寫許可權,所以執行失敗了。
示例:
將本地的單個檔案複製到遠端主機上
1
2
3
4
5
6
7
8
9
10 |
[root@docker ~]
#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/' [1] 23:39:53 [SUCCESS] qiuhom@192.168.0.218 總用量 0 [root@docker ~]
#pscp.pssh -H qiuhom@192.168.0.218 /etc/fstab /home/qiuhom/ [1] 23:40:26 [SUCCESS] qiuhom@192.168.0.218 [root@docker ~]
#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/' [1] 23:40:29 [SUCCESS] qiuhom@192.168.0.218 總用量 4 -rw-r--r--. 1 qiuhom qiuhom 552 11月 8 23:40 fstab [root@docker ~]
# |
將本地多個檔案複製到遠端主機上
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
[root@docker ~]
#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/' [1] 23:40:29 [SUCCESS] qiuhom@192.168.0.218 總用量 4 -rw-r--r--. 1 qiuhom qiuhom 552 11月 8 23:40 fstab [root@docker ~]
#pscp.pssh -H qiuhom@192.168.0.218 /root/f1 /etc/inittab /var/log/messages /home/qiuhom/ [1] 23:42:01 [SUCCESS] qiuhom@192.168.0.218 [root@docker ~]
#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/' [1] 23:42:06 [SUCCESS] qiuhom@192.168.0.218 總用量 248 -rw-r--r--. 1 qiuhom qiuhom 18 11月 8 23:41 f1 -rw-r--r--. 1 qiuhom qiuhom 552 11月 8 23:40 fstab -rw-r--r--. 1 qiuhom qiuhom 511 11月 8 23:41 inittab -rw-------. 1 qiuhom qiuhom 239787 11月 8 23:41 messages [root@docker ~]
# |
將本地目錄批次複製到遠端主機上
1
2
3
4
5
6
7
8
9
10 |
[root@docker ~]
#pssh -H 192.168.0.128 -i 'ls -l /home/' [1] 23:51:31 [SUCCESS] 192.168.0.128 總用量 0 [root@docker ~]
#pscp.pssh -H 192.168.0.128 -r /etc/sysconfig/network-scripts/ /home/ [1] 23:52:32 [SUCCESS] 192.168.0.128 [root@docker ~]
#pssh -H 192.168.0.128 -i 'ls -l /home/' [1] 23:52:53 [SUCCESS] 192.168.0.128 總用量 4 drwxr-xr-x 2 root root 4096 10月 25 03:36 network-scripts [root@docker ~]
# |
四、pslurp命令的使用
pslurp命令的功能是將遠端主機的檔案批次複製到本地
命令用法:
1 |
pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote
local
(本地名) |
說明:這個工具的用法和pscp.pssh的用法很類似,都是對檔案的操作,pscp.pssh是往遠端主機上推送,pslurp是從遠端主機上拉去檔案到本地。
-L:指定從遠端主機下載到本機的儲存的目錄,local是下載到本地後的名稱
-r:遞迴複製目錄
示例:
批次下載目標伺服器的passwd檔案至/root下,並命名為user
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 |
[root@docker ~]
#ll 總用量 4 drwxr-xr-x 2 root root 24 8月 31 18:04 ansible drwxr-xr-x 7 root root 95 7月 11 11:21 docker-training drwxr-xr-x 2 root root 86 11月 8 23:02 dr1 -rw-r--r-- 1 root root 18 11月 8 23:20 f1 drwxr-xr-x 2 root root 42 10月 24 21:51 scripts drwxr-xr-x 2 root root 47 7月 22 10:11 temp drwxr-xr-x 2 root root 100 11月 8 23:20
test [root@docker ~]
#pslurp -h test/iplist -L /root/ /etc/passwd user [1] 00:03:00 [SUCCESS] qiuhom@192.168.0.218 [2] 00:03:00 [SUCCESS] root@192.168.0.217 [3] 00:03:04 [SUCCESS] root@192.168.0.128 [root@docker ~]
#ls 192.168.0.128 192.168.0.217 192.168.0.218 ansible docker-training dr1 f1 scripts temp
test [root@docker ~]
#ll 192.168.0.128/ 總用量 4 -rw-r--r-- 1 root root 1262 11月 9 00:03 user [root@docker ~]
#cat 192.168.0.128/user root:x:0:0:root:
/root
:
/bin/bash bin:x:1:1:bin:
/bin
:
/sbin/nologin daemon:x:2:2:daemon:
/sbin
:
/sbin/nologin adm:x:3:4:adm:
/var/adm
:
/sbin/nologin lp:x:4:7:lp:
/var/spool/lpd
:
/sbin/nologin sync
:x:5:0:
sync
:
/sbin
:
/bin/sync shutdown
:x:6:0:
shutdown
:
/sbin
:
/sbin/shutdown halt:x:7:0:halt:
/sbin
:
/sbin/halt mail:x:8:12:mail:
/var/spool/mail
:
/sbin/nologin uucp:x:10:14:uucp:
/var/spool/uucp
:
/sbin/nologin operator:x:11:0:operator:
/root
:
/sbin/nologin games:x:12:100:games:
/usr/games
:
/sbin/nologin gopher:x:13:30:gopher:
/var/gopher
:
/sbin/nologin ftp
:x:14:50:FTP User:
/var/ftp
:
/sbin/nologin nobody:x:99:99:Nobody:/:
/sbin/nologin dbus:x:81:81:System message bus:/:
/sbin/nologin vcsa:x:69:69:virtual console memory owner:
/dev
:
/sbin/nologin abrt:x:173:173::
/etc/abrt
:
/sbin/nologin haldaemon:x:68:68:HAL daemon:/:
/sbin/nologin ntp:x:38:38::
/etc/ntp
:
/sbin/nologin saslauth:x:499:76:Saslauthd user:
/var/empty/saslauth
:
/sbin/nologin postfix:x:89:89::
/var/spool/postfix
:
/sbin/nologin sshd:x:74:74:Privilege-separated SSH:
/var/empty/sshd
:
/sbin/nologin tcpdump:x:72:72::/:
/sbin/nologin abc:x:500:500::
/home/abc
:
/bin/bash admin:x:501:501::
/home/admin
:
/bin/bash mysql:x:27:27:MySQL Server:
/var/lib/mysql
:
/bin/bash apache:x:48:48:Apache:
/var/www
:
/sbin/nologin tom:x:502:502::
/home/tom
:
/bin/bash [root@docker ~]
# |
說明:-L 是指定存放遠端主機下載下來的檔案存放地,每個主機的檔案都會在其指定的本地目錄下以遠端主機ip為名的目錄名下放著,檔名為我們指定的檔名。
將遠端主機192.168.0.128 上的/etc/profile.d/目錄下載到本地主機
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
[root@docker
test
]
#ll 總用量 4 -rw-r--r-- 1 root root 59 11月 8 22:04 iplist [root@docker
test
]
#pslurp -r -H 192.168.0.128 /etc/profile.d/ . [1] 00:30:09 [SUCCESS] 192.168.0.128 [root@docker
test
]
#tree . ├── 192.168.0.128 │ └── profile.d │ ├── colorls.csh │ ├── colorls.sh │ ├── cvs.csh │ ├── cvs.sh │ ├── glib2.csh │ ├── glib2.sh │ ├── lang.csh │ ├── lang.sh │ ├──
less
.csh │ ├──
less
.sh │ ├── modules.csh │ ├── modules.sh │ ├── vim.csh │ ├── vim.sh │ └── which2.sh └── iplist 2 directories, 16 files |
說明:若未指定檔案存放在本地的名字,預設就是存放在當前目錄下以遠端主機ip為名的目錄下,檔名為我們下載遠端主機上的檔名。
五、pnuke命令的使用
pnuke命令的功能是能在多個主機上並行殺死程式的程式
命令用法:
1 |
pnuke [-vA] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] pattern |
說明:以上選項同pssh選項用法一致
示例:
殺死遠端主機httpd程式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
[root@docker
test
]
#pssh -h iplist -i 'ss -ntl |grep 80' [1] 01:17:48 [SUCCESS] root@192.168.0.128 LISTEN 0 128 :::80 :::* [2] 01:17:48 [SUCCESS] root@192.168.0.218 LISTEN 0 128 :::80 :::* [3] 01:17:48 [SUCCESS] root@192.168.0.217 LISTEN 0 128 :::80 :::* [root@docker
test
]
#pnuke -h iplist httpd [1] 01:18:18 [SUCCESS] root@192.168.0.128 [2] 01:18:19 [SUCCESS] root@192.168.0.217 [3] 01:18:19 [SUCCESS] root@192.168.0.218 [root@docker
test
]
#pssh -h iplist -i 'ss -ntl |grep 80' [1] 01:18:23 [FAILURE] root@192.168.0.128 Exited with error code 1 [2] 01:18:23 [FAILURE] root@192.168.0.218 Exited with error code 1 [3] 01:18:23 [FAILURE] root@192.168.0.217 Exited with error code 1 [root@docker
test
]
# |
說明:可以看到我們過濾httpd監聽的80埠命令執行狀態失敗,說明遠端主機上沒有程式監聽在80埠上。
六、prsync 命令的使用
prsync命令的功能是將檔案並行複製到多個主機
命令用法:
1 |
prsync [-vAraz] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t
time
‐out] [-O options] [-x args] [-X arg] [-S args]
local
remote |
說明:以上選項同pssh命令選項類似。
示例:
複製檔案到伺服器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 |
[root@docker
test
]
#pssh -h iplist -i 'ls -l /root/' [1] 01:35:19 [SUCCESS] root@192.168.0.128 總用量 4 -rw-r--r-- 1 root root 552 10月 25 05:19 fs [2] 01:35:19 [SUCCESS] root@192.168.0.218 總用量 4 -rw-r--r--. 1 root root 552 11月 9 01:34 fs [3] 01:35:19 [SUCCESS] root@192.168.0.217 總用量 4 -rw-r--r--. 1 root root 552 11月 9 01:35 fs [root@docker
test
]
#prsync -h iplist /etc/inittab /root/init/ [1] 01:35:52 [SUCCESS] root@192.168.0.128 [2] 01:35:52 [SUCCESS] root@192.168.0.218 [3] 01:35:52 [SUCCESS] root@192.168.0.217 [root@docker
test
]
#pssh -h iplist -i 'ls -l /root/' [1] 01:36:01 [SUCCESS] root@192.168.0.128 總用量 8 -rw-r--r-- 1 root root 552 10月 25 05:19 fs drwxr-xr-x 2 root root 4096 10月 25 05:19 init [2] 01:36:01 [SUCCESS] root@192.168.0.218 總用量 8 -rw-r--r--. 1 root root 552 11月 9 01:34 fs drwxr-xr-x. 2 root root 4096 11月 9 01:35 init [3] 01:36:01 [SUCCESS] root@192.168.0.217 總用量 4 -rw-r--r--. 1 root root 552 11月 9 01:35 fs drwxr-xr-x. 2 root root 21 11月 9 01:35 init [root@docker
test
]
# |
說明:prsync的用法和pscp.pssh的用法類似,它兩的區別在於,pscp.pssh不支援建立目錄(在遠端伺服器上若沒有指定目錄,則建立),而prsync支援。pscp.pssh 支援將本地的不同多個檔案同時複製到遠端服務端,而prsync 不支援。
複製目錄到伺服器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
[root@docker
test
]
#pssh -h iplist -i 'rm -rf /root/*' [1] 01:45:21 [SUCCESS] root@192.168.0.128 [2] 01:45:21 [SUCCESS] root@192.168.0.218 [3] 01:45:21 [SUCCESS] root@192.168.0.217 [root@docker
test
]
#pssh -h iplist -i 'ls -l /root/' [1] 01:45:38 [SUCCESS] root@192.168.0.128 總用量 0 [2] 01:45:38 [SUCCESS] root@192.168.0.218 總用量 0 [3] 01:45:38 [SUCCESS] root@192.168.0.217 總用量 0 [root@docker
test
]
#prsync -r -h iplist /root/scripts/ /root/aaa/ [1] 01:46:20 [SUCCESS] root@192.168.0.128 [2] 01:46:21 [SUCCESS] root@192.168.0.218 [3] 01:46:21 [SUCCESS] root@192.168.0.217 [root@docker
test
]
#pssh -h iplist -i 'ls -l /root/' [1] 01:46:42 [SUCCESS] root@192.168.0.128 總用量 4 drwxr-xr-x 2 root root 4096 10月 25 05:30 aaa [2] 01:46:42 [SUCCESS] root@192.168.0.218 總用量 4 drwxr-xr-x. 2 root root 4096 11月 9 01:46 aaa [3] 01:46:42 [SUCCESS] root@192.168.0.217 總用量 0 drwxr-xr-x. 2 root root 42 11月 9 01:46 aaa [root@docker
test
]
# |
說明:傳目錄和pscp.pssh用法一樣,需要加-r選項。