pssh远程套件工具

pssh远程套件工具

使用pssh套件工具并发远程其他主机,具体要求如下:
使用密码批量、多并发远程其他主机
使用密钥批量、多并发远程其他主机
批量、多并发拷贝数据到其他主机
批量、多并发从其他主机下载数据到本机
批量、多并发杀死其他主机的进程

准备实验所需的虚拟机环境,实验环境所需要的主机及对应的IP设置,正确配置IP地址、主机名称,并且为每台主机配置YUM源。
之前已经配置好了

安装pssh后会提供如下命令:
/usr/bin/pnuke
/usr/bin/prsync
/usr/bin/pscp.pssh
/usr/bin/pslurp
/usr/bin/pssh
--------------------------------------------------------------------------------------------------
步骤一:准备工作

1)安装软件包
# rpm -ivh pssh-2.3.1-5.el7.noarch.rpm

2)修改/etc/hosts本地解析文件
# cat /etc/hosts
… …
192.168.2.100 host1
192.168.2.200 host2
192.168.4.10 host3
… …

3)创建主机列表文件
# vim /root/host.txt #每行一个用户名、IP或域名
… …
root@host1
host2 #不写用户名的话,默认是root
host3

#写这个脚本的好处是以后批量远程别人的时候,不用写那么多机子,需要远程谁,就把他们都加入这个脚本里,就可以了。
--------------------------------------------------------------------------------------------
步骤二:使用密码批量、多并发远程其他主机

1)语法格式
# man pssh #通过man帮助查看工具选项的作用

pssh提供并发远程连接功能
-A 使用密码远程其他主机(默认使用密钥)
-i 将输出显示在屏幕,不管对的还是错的,只要是输出,就全都显示在我这里。
-H 设置需要连接的主机
-h 设置主机列表文件
-p 设置并发数量,数量越多,占用的内存就越多。
-t 设置超时时间
-o dir 设置标准输出信息保存的目录
-e dir 设置错误输出信息保存的目录
-x 传递参数给ssh
----------------------------------------------------------------------------------------------
2)使用密码远程多台主机执行命令,屏幕显示标准和错误输出信息
# pssh -i -A -H 'host1 host2 host3' -x '-o StrictHostKeyChecking=no' echo hello

# pssh -A -H "host1 host2 host3" -x "-o StrictHostKeyChecking=no" echo hello

页面显示
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 17:35:51 [SUCCESS] host1
[2] 17:35:51 [SUCCESS] host2
[3] 17:35:51 [SUCCESS] host3

#主机要用引号“”引起来。"-o StrictHostKeyChecking=no"是表示第一次连接时不要提醒要不要输入yes或者no,这个只在第一次连接时使用,以后就不用加这个很长的参数了。

3)使用密码远程多台主机执行命令,不显示标准和错误输出信息,通过读取host.txt读取主机信息
# pssh -A -h host.txt echo hello

# pssh -i -A -H "host1 host2 host3" ls /
# pssh -i -A -h host.txt echo hello #前提是文件在当前目录,否则要写绝对路径
------------------------------------------------------------------------------------------------------
步骤三:使用密钥批量、多并发远程其他主机

1)生成密钥并发送密钥到其他主机
# ssh-keygen -N '' -f /root/.ssh/id_rsa #非交互生成密钥文件
# for i in 2.100 2.200 4.10; do ssh-copy-id 192.168.$i; done
#屏幕会要求你依次输入这3台主机的密码

或者也可以手动分别打以下3条命令
# ssh-copy-id host1
# ssh-copy-id host2
# ssh-copy-id host3

2)使用密钥远程其他主机
# pssh -h host.txt echo hello

3)使用密钥远程其他主机,将标准输出信息写入到/tmp目录
# pssh -o /root/ -h host.txt echo hello
# ls /root/
# cat root@host1
# cat host2
# cat host3
---------------------------------------------------------------------------------------------------------
ssh-keygen 基本用法

ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥.

ssh-keygen(选项)

-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型。
生成ssh key的时候,可以通过 -f 选项指定生成文件的文件名,如下:

ssh-keygen -f test -C "test key"
~~文件名 ~~~~ 备注
输入完后,会提示输入密码和确认密码。

文件最终会保存在当前目录下。
---------------------------------------------------------------------------------------------------------
步骤四:批量、多并发拷贝数据到其他主机

1)语法格式
# man pscp.pssh #通过man帮助查看工具选项的作用
#pscp.pssh提供并发拷贝文件功能
#-r 递归拷贝目录
#其他选项基本与pssh一致

2)将本地的/root/xxx.txt拷贝到远程主机的/目录下

# echo "xxxxxx" > xxx.txt
# pscp.pssh -h host.txt /root/xxx.txt /

3)递归将本地的/etc目录拷贝到远程主机的/tmp目录下
# pscp.pssh -r -h host.txt /etc /tmp
----------------------------------------------------------------------------------------
步骤五:批量、多并发从其他主机下载数据到本机

1)语法格式
# man pslurp #通过man帮助查看工具选项的作用
#pslurp提供远程下载功能
#选项与pscp.pssh基本一致

2)将远程主机的/etc/passwd,拷贝到当前目录下,存放在对应IP下的pass文件中。注意:最后的pass是文件名。
# cd /tmp/
[root@proxy tmp]# pslurp -h /root/host.txt /etc/passwd /pass
[root@proxy tmp]# ls
firefox_root
host1
host2
host3

# touch host1 host2 host3
[root@proxy tmp]# pslurp -h /root/host.txt /etc/passwd / #如果当前目录里有同名的文件的话,就会创建失败。

页面显示
[1] 18:11:30 [FAILURE] host2 Exited with error code 1
[2] 18:11:30 [FAILURE] root@host1 Exited with error code 1
[3] 18:11:30 [FAILURE] host3 Exited with error code 1

3)将远程主机的/etc/passwd目录,拷贝到media下,存放在对应IP下的pass文件
# pslurp -h /root/host.txt -L /media /etc/passwd /pass

页面显示
[1] 18:12:29 [SUCCESS] host2
[2] 18:12:29 [SUCCESS] root@host1
[3] 18:12:29 [SUCCESS] host3

# ls /media/
host1 host2 host3
------------------------------------------------------------------
步骤六:批量、多并发杀死其他主机的进程

1)语法格式
# man pnuke #通过man帮助查看工具选项的作用
#pnuke提供远程杀死进程的功能
#选项与pssh基本一致。

分别在那3台机子让睡1000秒
# sleep 1000

2)将远程主机上的sleep进程杀死
# pnuke -h /root/host.txt sleep

页面显示
[1] 18:15:43 [SUCCESS] host2
[2] 18:15:43 [SUCCESS] root@host1
[3] 18:15:43 [SUCCESS] host3
----------------------------------------------------------------
3台主机分别执行死循环脚本,分别是test1.sh,test2.sh,test3.sh

[root@client ~]# cat test1.sh
#!/bin/bash
while :
do
echo a
echo b
done


[root@web1 ~]# cat ./test2.sh
#!/bin/bash
while :
do
echo a
echo b
done

[root@web2 ~]# cat test3.sh
#!/bin/bash
while :
do
echo a
echo b
done
-----------------------------------------------------------
3)将远程主机上的test相关脚本都杀死。
服务器能杀死所有文件名里有test的文件,如test1.sh,test2.sh,test3.sh

# pnuke -h /root/host.txt test

页面显示
[1] 18:51:45 [SUCCESS] host2
[2] 18:51:45 [SUCCESS] root@host1
[3] 18:51:45 [SUCCESS] host3

4)将远程主机上的test.sh脚本杀死
# pnuke -h host.txt test.sh

 

posted @ 2019-04-29 00:15  安于夏  阅读(195)  评论(0编辑  收藏  举报