linux運維工具pssh

lhrbest發表於2020-02-20


linux運維工具pssh


1pssh介紹

pssh是python寫的可以併發在多臺機器上批次執行命令的工具,它的用法可以媲美ansible的一些簡單用法,執行起來速度比ansible快它支援檔案並行複製,遠端命令執行,殺掉遠端主機上的程式等等。殺手鐧是檔案並行複製,,當進行再遠端主機批次上傳下載的時候,最好使用它。

2pssh的使用

在使用pssh之前,必須要保證管理主機和本地主機進行過金鑰的認證,或者是在進行批次時,沒有做過金鑰認證,但是必須保證被管理的多臺主機的密碼相同。關於如何做金鑰認證,這裡就不多說了,可以自行百度。

2.1安裝

官網地址 (需要能開啟谷歌)

或者是yum 來安裝

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/parallel-ssh/pssh-2.3.1.tar.gztar -zxvf pssh-2.3.1.tar.gz
cd pssh-2.3.1python setup.py install
或者
yum install -y pssh

使用yum安裝後,只能使用pssh,但是編譯安裝後會包括其他命令也安裝了(pscp  prsync  pnuke  pslurp)

pssh:在遠端多臺主機上並行執行命令

pscp :把檔案並行複製到多臺遠端主機上

prsync:使用rsync協議本地檔案同步到遠端多臺主機上。

pnuke:在遠端多臺主機上並行killall某一程式

pslurp:把檔案從遠端多臺主機上覆制到本地主機上

2.2 pssh常用引數

 1 pssh  --help 2  3 Usage: pssh [OPTIONS] command [...] 4  5 Options: 6   --version             show program's version number and exit 7   --help                show this help message and exit 8   -h HOST_FILE, --hosts=HOST_FILE 9                         hosts file (each line "[user@]host[:port]")10   -H HOST_STRING, --host=HOST_STRING11                         additional host entries ("[user@]host[:port]")12   -l USER, --user=USER  username (OPTIONAL)13   -p PAR, --par=PAR     max number of parallel threads (OPTIONAL)14   -o OUTDIR, --outdir=OUTDIR15                         output directory for stdout files (OPTIONAL)16   -e ERRDIR, --errdir=ERRDIR17                         output directory for stderr files (OPTIONAL)18   -t TIMEOUT, --timeout=TIMEOUT19                         timeout (secs) (0 = no timeout) per host (OPTIONAL)20   -O OPTION, --option=OPTION21                         SSH option (OPTIONAL)22   -v, --verbose         turn on warning and diagnostic messages (OPTIONAL)23   -A, --askpass         Ask for a password (OPTIONAL)24   -x ARGS, --extra-args=ARGS25                         Extra command-line arguments, with processing for26                         spaces, quotes, and backslashes27   -X ARG, --extra-arg=ARG28                         Extra command-line argument29   -i, --inline          inline aggregated output and error for each server30   --inline-stdout       inline standard output for each server31   -I, --send-input      read from standard input and send as input to ssh32   -P, --print           print output as we get it33 34 Example: pssh -h hosts.txt -l irb2 -o /tmp/foo uptime

具體常用介紹:

-h   HOST_FILE   後邊跟遠端主機列表(ip)

-H   HOST_STRING   後邊跟遠端主機名或者ip地址

-l   USER  指定遠端主機的使用者名稱

-p  PAR   指定pssh最大的並行執行緒數。

-o  將輸出的內容重定向到一個指定的檔案中

-O 指定ssh引數的具體配置

-e  將執行錯誤重定向到一個指定的檔案中

-t  設定命令執行超時時間

-x  傳遞ssh命令的一些引數

-i  在遠端主機上執行命令完成後顯示標準輸出和標準錯誤

-P  在執行遠端命令時,輸出執行結果

 用法例項:

pssh -P  -i   -h  sz_vpc.txt  "w"

3pscp複製檔案到遠端主機

pscp  -h  ip.txt /etc/wenjian.txt   /tmp/

4pnuke殺掉某一程式

這個命令類似yu  killall命令

pnuke  -h  iplist.txt   httpd

上邊的意思是在遠端主機上批次關閉httpd服務

能透過killall關閉的服務,都可以透過pnuke來批次完成

 5 pslurp 遠端主機複製檔案到本地主機

pslurp -h iplist.txt -L /home/ /hose/wenjian/yuanc.conf open.conf

上邊是,將所有遠端主機/hose/wenjian/yuanc.conf複製到本地主機/home/目錄下,並且重新命名為open.conf  -L 來指定本地檔案路徑

下面這個是複製目錄

 pslurp -h iplist.txt -r -L /home/ /hose/wenjian/ open

ps:建議分發檔案,執行命令,批次殺死程式,使用pssh,pscp,pnuke,速度很快的


Linux系統中pssh系列工具的使用

  一、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選項。






About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

........................................................................................................................

● QQ群號: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2020-02-01 06:00 ~ 2020-02-31 24:00 在西安完成

● 最新修改時間:2020-02-01 06:00 ~ 2020-02-31 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2676431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章