首页 > 编程知识 正文

批量ssh并执行命令,ssh 批量执行远程多机器命令

时间:2023-05-04 04:44:38 阅读:231316 作者:1989

Pssh

pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,,当进行再远程主机批量上传下载的时候,最好使用它。
在使用pssh之前,必须要保证管理主机和本地主机进行过密钥的认证,或者是在进行批量时,没有做过密钥认证,但是必须保证被管理的多台主机的密码相同。

1、RPM包安装

1) 安装软件包

[root@proxy ~]# rpm -ivh pssh-2.3.1-5.el7.noarch.rpm

安装pssh后会提供如下命令:

/usr/chdzc/pnuke/usr/chdzc/prsync/usr/chdzc/pscp.pssh/usr/chdzc/pslurp/usr/chdzc/pssh

2)修改/etc/hosts本地解析文件

cat /etc/hosts … …192.168.2.100 host1192.168.2.200 host2192.168.4.100 host3… …

3)创建主机列表文件

[root@proxy ~]# cat /root/host.txt //每行一个用户名、IP或域名… …root@host1host2 host3… … 步骤二:使用密码批量、 多并发远程其他主机

1) 语法格式

[root@proxy ~]# man pssh //通过man帮助查看工具选项的作用

pssh提供并发远程连接功能
-A 使用密码远程其他主机(默认使用密钥)
-i 将输出显示在屏幕
-H 设置需要连接的主机
-h 设置主机列表文件
-p 设置并发数量
-t 设置超时时间
-o dir 设置标准输出信息保存的目录
-e dir 设置错误输出信息保存的目录
-x 传递参数给ssh

2)使用密码远程多台主机执行命令,屏幕显示标准和错误输出信息

[root@proxy ~]# pssh -i -A -H 'host1 host2 host3' > -x '-o StrictHostKeyChecking=no' echo hello

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

[root@proxy ~]# pssh -A -h host.txt > -x '-o StrictHostKeyChecking=no' echo hello 步骤三:使用密钥批量、多并发远程其他主

1) 生成密钥并发送密钥到其他主机

[root@proxy ~]# ssh-keygen -N '' -f /root/.ssh/id_rsa //非交互生成密钥文件[root@proxy ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub host1[root@proxy ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub host2[root@proxy ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub host3

2)使用密钥远程其他主机

[root@proxy ~]# pssh -h host.txt -x '-o StrictHostKeyChecking=no' echo hello

3)使用密钥远程其他主机,将标准输出信息写入到/tmp目录

[root@proxy ~]# pssh -h host.txt -o /tmp/ -x '-o StrictHostKeyChecking=no' echo hello 步骤四:批量、多并发拷贝数据到其他主机

1) 语法格式

[root@proxy ~]# man pscp.pssh //通过man帮助查看工具选项的作用

pscp.pssh提供并发拷贝文件功能
-r 递归拷贝目录
其他选项基本与pssh一致

2)将本地的etc.tar.gz拷贝到远程主机的根目录下

[root@proxy ~]# pscp.pssh -h host.txt > -x '-o StrictHostKeyChecking=no' etc.tar.gz /

3)递归将本地的/etc目录拷贝到远程主机的/tmp目录下

[root@proxy ~]# pscp.pssh -r -h host.txt > -x '-o StrictHostKeyChecking=no' /etc /tmp 步骤五:批量、多并发从其他主机下载数据到本机

1) 语法格式

[root@proxy ~]# man pslurp //通过man帮助查看工具选项的作用

pslurp提供远程下载功能 选项与
pscp.pssh基本一致

2)将远程主机的/etc/目录,拷贝到当前目录下,存放在对应IP下的tmp目录

[root@proxy ~]# pslurp -r -h host.txt -x '-o StrictHostKeyChecking=no' /etc /tmp

3)将远程主机的/etc/目录,拷贝到media下,存放在对应IP下的tmp目录

[root@proxy ~]# pslurp -r -h host.txt -x '-o StrictHostKeyChecking=no' > -L /media /etc /tmp 步骤六:批量、多并发杀死其他主机的进程

1) 语法格式

[root@proxy ~]# man pnuke//通过man帮助查看工具选项的作用

pnuke提供远程杀死进程的功能
选项与pssh基本一致

2)将远程主机上的sleep进程杀死

[root@proxy~]#pnuke-hhost.txt-x'-o StrictHostKeyChecking=no' sleep

3)将远程主机上的test相关脚本都杀死(如:test1,testtt,test2等等)

[root@proxy~]#pnuke-hhost.txt-x'-o StrictHostKeyChecking=no' test

4)将远程主机上的test.sh脚本杀死

[root@proxy ~]# pnuke -h host.txt -x '-o StrictHostKeyChecking=no' test.sh 2、源码包安装

https://blog.csdn.net/zxdqj/article/details/90205112

SSH的远程操作

ssh远程操作,主要用于在远程的机器上面执行某个操作,格式如下:

ssh user@host 'command'

案例1、在机器A(192.168.13.148)中查看机器B(192.168.13.149)的操作系统类型。
在A机器上面执行如下代码:

ssh dequan@192.168.13.149 'uname -a'

案例2、将机器A(192.168.13.148)中test文件夹复制到B机器(192.168.13.149)。
在A机器上面,执行如下命令:

tar -cz test | ssh dequan@192.168.13.149 'tar -xz'

当然,我们也可以使用scp命令或rz命令,传输文件。
案例3、在机器A(192.168.13.148)处查看B机器(192.168.13.149)是否监听了1080端口。
在A机器上面,执行如下命令:

ssh dequan@192.168.13.149 'netstat -tln |grep 1080'

参考链接 :
pssh远程套件工具 :
https://mp.weixin.qq.com/s/Ks8neMnWZtswA59jZKp45g

https://blog.csdn.net/zxdqj/article/details/90205112

https://mp.weixin.qq.com/s/SX88e_4B96jiUuqF5joGcQ

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。