PSSH批量运维轻量级工具

本文介绍pssh工具的安装配置及使用方法,pssh是一个基于Python的并发执行命令工具,支持远程执行命令、文件并行复制等功能。文中详细介绍了如何安装pssh、创建单向互信、批量添加互信脚本及pssh的各种用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

pssh全称是parallel-ssh,基于Python编写的并发在多台服务器上批量执行命令的工具,它支持文件并行复制、远程并行执行命令、杀掉远程主机上的进程等

该工具可以视作ansible的简化版本,不需要安装任何客户端程序,只需要一台控制主机,并保证控制主机与被管理主机之间建立单向互信即可


获取pssh:

wget https://pypi.python.org/packages/60/9a/8035af3a7d3d1617ae2c7c174efa4f154e5bf9c24b36b623413b38be8e4a/pssh-2.3.1.tar.gz

安装pssh:

[root@localhost ~]# tar -zxvf pssh-2.3.1.tar.gz

[root@localhost ~]# cd pssh-2.3.1

[root@localhost ~]#python setup.py install   

注:pssh基于python2编写,不要使用python3安装,否则无法使用

创建单向互信:

[root@localhost ~]#ssh-keygen -t rsa            

全部使用默认值即可,在/root/.ssh下生成id_rsa私钥,id_rsa.pub公钥

[root@localhost ~]#ssh-copy-id  root@192.168.1.100 

将公钥内容拷贝至被管理主机的/root/.ssh/authorized_keys下

[root@localhost ~]#pssh -H 192.168.1.100 "date"  

测试互信,如果返回主机时间则表示成功

自动批量添加互信脚本:

[root@localhost ~]#yum install -y sshpass

[root@localhost ~]#cat auto_ssh_copy.sh

#!/bin/bash
for i in `cat host_list`
do
sshpass -p root ssh $i -o StrictHostKeyChecking=no "date">/dev/null
sshpass -p root ssh-copy-id root@$i>/dev/null
done

需要创建host_list主机地址列表,其中root为远端主机密码


pssh用法:

pssh的用法主要包括如下五个方面

1.pssh命令    在远程主机上执行本地命令或者脚本                                                     

2.pscp命令    将本地文件拷贝至多个远端主机

3.pslurp命令  从多台远程机器拷贝文件到本地

4.pnuke命令  并行在远端主机杀进程

5.prsync命令  使用rsync协议从本地计算机同步到远程主机

相关参数

-h –hosts 主机文件列表,内容格式”[user@]host[:port]”
-H –host 单台主机,内容格式”[user@]host[:port]”
-l –user 登录使用的用户名
-p –par 并发的线程数【可选】
-o –outdir 输出的文件目录【可选】
-e –errdir 错误输入文件【可选】
-t –timeout TIMEOUT 超时时间设置,0无限制【可选】
-O  –option SSH的选项
-v –verbose 详细模式
-A –askpass 手动输入密码模式
-x –extra-args 额外的命令行参数使用空白符号,引号,反斜线处理
-X –extra-arg 额外的命令行参数,单个参数模式,同-x
-i –inline 每个服务器内部处理信息输出
–inline-stdout 每个服务器的内服输出
-P, –print 打印出服务器返回信息


用例

pscp -h host_list  info.sh /home                              

将本地info.sh文件拷贝至所有远端服务器的/hone目录下

pssh -h host_list  "cd /home;sh info.sh>info.log"  

执行info.sh将内容保存在远端服务器的info.log文件中

pslurp -h host_list -L /tmp/test /home/info.log info.txt 

将远端主机下的/home/info.log拷贝到本地/tmp/test目录下并将文件重命名为info.txt,/tmp/test目录下会自动创建以远端主机ip命名的文件夹,每个文件夹下包括对应的info.txt文件

pssh -h host_list  -o /tmp/test -i  "cd /home;ls"    

显示/home下的内容到本地标准输出,同时输出到/tmp/test目录下,在/tmp/test目录下会自动生成以远端ip命名的文件,每个文件包含对应内容

pnuke -h host_list nginx  

杀掉远端主机的nginx进程

prsync -r -h host_list test.log /tmp/test.log  

将本地test.log文件内容通过rsync协议同步到远端服务器/tmp/test.log下,该命令需要rsync支持,如rsync包未安装,则使用yum install -y rsync安装

prsync -r -h host_list /software /tmp     

将本地/software目录下所有文件同步到远端服务器的/tmp目录下


需要注意的问题:

/root/.ssh目录的默认权限设置为700,id_rsa默认权限600,id_rsa.pub默认权限644,authorized_keys默认权限644,遵循以上权限设置避免出现权限过大而使互信无法生效的问题

对于大规模应用该工具的情况下,建议先用for循环ping列表中的所有主机过滤掉其中一部分无法连通的主机,生成新的主机列表,在新的主机列表中使用pssh -h host_list "date"过滤掉互信存在问题或者ssh服务存在问题的主机,生成最终列表,在最终列表上执行需要执行的命令或者脚本,可以节省一些等待的时间,更快的得到相关结果

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值