因为公司金融项目正式上线,有等保的要求,所有的线上服务器对操作过历史命令都要记录下来,需要修改一部分的配制文件。总共有300多台Linux服务器,总不能一台一台去改吧。首先想到是ansble,saltstack这两个批量管理的,但是想了想,saltstack不会,ansble好像是好像是被管理端还要安装客户端的,又不经常使用(线上的环境),弄好了还要编排剧本,语法都忘记了。有没有更轻量一点的工具呢?以前在书上了解到pssh这个工具好像挺不错的,但是也没有使用,先试试在说。

pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,当进行再远程主机批量上传下载的时候,最好使用它。
Pssh是用python写的轻量的批量管理工具。有两种安装方式,一种yum安装,一种编译安装。

第一步 安装
我采用是yum安装,yum安装需要epel源。

yum install pssh

使用yum安装后,只能使用pssh,但是编译安装后会包括其他命令也安装了(实测yum安装这些命令都是有的)
pssh:在远程多台主机上并行运行命令
pscp :把文件并行复制到多台远程主机上
prsync:使用rsync协议本地文件同步到远程多台主机上。
pnuke:在远程多台主机上并行killall某一进程
pslurp:把文件从远程多台主机上复制到本地主机上
第二步 ssh单项免秘钥登录
找一台测试服务器,能够ping通所有的被管理的机器,然后做ssh单项的免秘钥登录,这免秘钥登录是批量管理软件都需要做的事情。这是使用一个免密码交互的脚本来实现。
需要安装sshpass命令(这是一个ssh免交互写入密码的命令)

yum install –y sshpass

脚本

#!/bin/bash
for ip in seq {..}
do
sshpass –p”password” ssh-copy-id -i /root/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 10.8..$ip
done

关于pssh命令执行的参数
-h HOST_FILE 后边跟远程主机列表(ip)
-H HOST_STRING 后边跟远程主机名或者ip地址
-l USER 指定远程主机的用户名
-p PAR 指定pssh最大的并行线程数。
-o 将输出的内容重定向到一个指定的文件中
-O 指定ssh参数的具体配置
-e 将执行错误重定向到一个指定的文件中
-t 设定命令执行超时时间
-x 传递ssh命令的一些参数
-i 在远程主机上执行命令完成后显示标准输出和标准错误
-P 在执行远程命令时,输出执行结果
具体怎么使用查看man帮助,有他的详细介绍
第三部 把脚本传到对应的被管理端的服务器上面去

pscp.pssh -h ip.txt test.sh /tmp/dengbao.sh

ip.txt 存放的是被管理的IP
file.txt 是dengbao.sh调用的文件
dengbao.sh是在服务器上修改和添加内容的脚本,用来执行等保要求的。
文件内容
ip.txt

10.8.27.112
10.8.27.113
10.8.27.114
10.8.27.115
10.8.27.116 。。。

dengbao.sh

export PROMPT_COMMAND='{ thisHistID=`history 1|awk "{print \\$1}"`;lastCommand=`history 1| awk "{\\$1=\"\" ;print}"`;user=`id -un`;whoStr=(`who -u am i`);
realUser=${whoStr[]};logMonth=${whoStr[]};
logDay=${whoStr[]};
logTime=${whoStr[]};pid=${whoStr[]};
ip=${whoStr[]};if [ ${thisHistID}x != ${lastHistID}x ];
then echo -E `date "+%Y/%m/%d %H:%M:%S"` $user\($realUser\)@$ip[PID:$pid][LOGIN:$logMonth $logDay $logTime] --- $lastCommand ;lastHistID=$thisHistID;fi; } >> $HISTORY_FILE'

第三部 批量执行脚本

pssh -h ip.txt bash /tmp/dengbao.sh

如果出现绿色success的标志,表示成功了。
第四部 ssh登录到服务器,检查一台服务器的执行情况,一台执行成功则全部执行成功。

附加:我也是在网上早其他命令的用法
pnuke杀掉某一进程
这个命令类似killall命令

pnuke -h iplist.txt httpd

上边的意思是在远程主机上批量关闭httpd服务
能通过killall关闭的服务,都可以通过pnuke来批量完成
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,速度很快的

pssh批量管理的更多相关文章

  1. pssh批量管理服务器

    pssh命令是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认证访问. 1. ...

  2. PSSH 批量管理服务器

    pssh命令是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认证访问. 1. ...

  3. pssh 批量管理执行

    pssh 是一个python写的批量执行工具,非常适合30台服务器以内的一些重复性的操作 安装很简单,只要python版本2.4 以上的都行 用这个工作最好把机器做做好ssh信任关系,不然很麻烦 每次 ...

  4. Linux下批量管理工具pssh安装和使用

    Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y install pssh pssh:在多个主机上并行地运行命令 pscp:把文件并行地复制到多个主机上 prsync:通 ...

  5. pssh批量远程管理工具

    Linux下批量管理工具pssh使用记录   pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器:pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具 ...

  6. 轻量级批量管理工具pssh

    pssh工具 pssh工具是个轻量级的批量管理工具,相比同类型的开源工具 Ansible,Saltstack,他比较轻量级,需要对管理的主机做秘钥认证 Ansible是可以做秘钥认证,也可以通过配置文 ...

  7. 批量管理工具:pssh/ansible

    ssh 免密码 批量管理1.创建用户useradd user1echo “123456”| passwd --stdin user12.创建秘钥ssh-keygen -t dsa然后一直回车 非交互式 ...

  8. 自动化批量管理工具pssh - 运维小结

    pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可以并发 ...

  9. Linux下批量管理工具pssh使用记录

    pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器:pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的:比起for循环的做法,我更推荐使用 ...

随机推荐

  1. pycharm 2018.1 激活

    pycharm 2018.1 License server 填入 https://jetlicense.nss.im/ 激活没有问题 测试时间 2018.4.18

  2. Hystrix入门与分析(一):初识Hystrix

    在以前的文章中,我们介绍过使用Gauva实现限流的功能,现在我们来了解一下如何在服务框架中实现熔断和降级的方法. 简介Hystrix 大型系统架构的演进基本上都是这样一个方向:从单体应用到分布式架构. ...

  3. hdu 2899

    mxy终于学会求函数极值了. 先写一道板子. #include <bits/stdc++.h> using namespace std; typedef double db; ; cons ...

  4. jar命令打jar包

    jar -cvfM0 cloudwarehouse-enter.jar ./BOOT-INF ./META-INF ./org jar -cvfM0 xxl-job-admin.war ./BOOT- ...

  5. C++/C面试题(2)

    (1)单向链表操作  1)在链表尾部插入一个节点 void addNewNodeTail(ListNode **HeadNode, int value)//在链表尾部插入一个节点{ ListNode* ...

  6. eclipse与hadoop-eclipse-plugin之间的版本对应关系

    eclipse与hadoop-eclipse-plugin之间,版本互相不兼容,或者说,版本要求严格. 把hadoop-eclipse-plugin复制到eclipse的plugins目录下以后,如果 ...

  7. jmeter安装与环境变量配置

    因jmeter是java开发的,要想运行java开发的程序,必须先下载JDK一.jdk 1.下载jdk  jdk下载地址:https://www.oracle.com/technetwork/java ...

  8. layui上传文件前端报404,实际文件已经上传成功

    原因:上传回调的方法接收的参数应该是json格式的,之前返回的是String,所以一直走异常的方法 第一种 在后台上加上@ResponseBody 第二种 @ResponseBody @Request ...

  9. Spring Boot 2.0 新特性和发展方向

    以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...

  10. 转载:Linux下解压zip乱码问题的解决(unzip)

    https://blog.csdn.net/abyjun/article/details/48344379 在windows上压缩的文件,是以系统默认编码中文来压缩文件.由于zip文件中没有声明其编码 ...