因为公司金融项目正式上线,有等保的要求,所有的线上服务器对操作过历史命令都要记录下来,需要修改一部分的配制文件。总共有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. SQL开头quoted和ansiNULL

    “QUOTED_IDENTIFIER” 当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔. 当 SET QUOTED_IDENTIFIER ...

  2. 使用redis原生list结构作为消息队列取代celery框架。

    1.web后台对大批量的繁重的io任务需要解耦使用分布式异步技术,否则会使接口阻塞,并发延迟,一般就选celery好了.此篇的取代主要是针对取代celery的worker模式.没有涉及到周期和定时模式 ...

  3. MTK USER版本禁止log输出

    1.bootable/bootloader/lk/app/mt_boot/mt_boot.c sprintf(cmdline,"%s%s",cmdline," print ...

  4. vue---import的几种表现形式

    在使用vue开发项目的时候,很多使用会import很多模块,或者组件,下面说下import的几种表现形式: 例如:我在 src / api / table.js import request from ...

  5. git使用——推送本地文件到远程仓库

    捣鼓了一下午之后总结如下:   1.首先可以照着这个链接里面博主给出的详细方法进行操作和配置: http://www.open-open.com/lib/view/open1454507333214. ...

  6. linux部署的flask项目配置static

    环境: Python2.7 flask nginx linux的系统是Ubantu Python:我的是linux已经有的. flask:pip install flask nginx:sudo ap ...

  7. G - Throw nails

    来源hde4393 The annual school bicycle contest started. ZL is a student in this school. He is so boring ...

  8. 查看 java 中的编译的字节码文件

    javap -c Atomicity ---------- javap -c 产生的字节码文件---------- Compiled from "Atomicity.java" p ...

  9. Javascript 异步处理与计时跳转

    实现计时跳转的代码: <html lang="en"> <head> <meta charset="UTF-8"> < ...

  10. 20、promise与ajax jsonp

    一.Promise的作用是什么? 当有多个请求之间有相互依赖关系(紧接着的请求需要上一次请求的返回结果),这时promise的作用就凸显出来了. 二.如何使用promise? new Promise( ...