博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pssh批量管理服务器
阅读量:5122 次
发布时间:2019-06-13

本文共 5434 字,大约阅读时间需要 18 分钟。

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

 

1. 安装

  安装可以使用yum或者apt-get安装,还可以使用源码安装, 由于我使用apt-get安装不好用,所以这里我只说下源码安装

wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz tar xf pssh-2.3.1.tar.gz cd pssh-2.3.1/ python setup.py install

2. pssh选项说明

--version:查看版本 --help:查看帮助,即此信息 -h:主机文件列表,内容格式”[user@]host[:port]” -H:主机字符串,内容格式”[user@]host[:port]” -:登录使用的用户名 -p:并发的线程数【可选】 -o:输出的文件目录【可选】 -e:错误输入文件【可选】 -t:TIMEOUT 超时时间设置,0无限制【可选】 -O:SSH的选项 -v:详细模式 -A:手动输入密码模式 -x:额外的命令行参数使用空白符号,引号,反斜线处理 -X:额外的命令行参数,单个参数模式,同-x -i:每个服务器内部处理信息输出 -P:打印出服务器返回信息

3. 实例

 (1) 查看版本 

#pssh --version#2.3.1

(2) 查看帮助

#pssh --helpUsage: pssh [OPTIONS] command [...]Options:  --version             show program's version number and exit  --help                show this help message and exit  -h HOST_FILE, --hosts=HOST_FILE                        hosts file (each line "[user@]host[:port]")  -H HOST_STRING, --host=HOST_STRING                        additional host entries ("[user@]host[:port]")  -l USER, --user=USER  username (OPTIONAL)  -p PAR, --par=PAR     max number of parallel threads (OPTIONAL)  -o OUTDIR, --outdir=OUTDIR                        output directory for stdout files (OPTIONAL)  -e ERRDIR, --errdir=ERRDIR                        output directory for stderr files (OPTIONAL)  -t TIMEOUT, --timeout=TIMEOUT                        timeout (secs) (0 = no timeout) per host (OPTIONAL)  -O OPTION, --option=OPTION                        SSH option (OPTIONAL)  -v, --verbose         turn on warning and diagnostic messages (OPTIONAL)  -A, --askpass         Ask for a password (OPTIONAL)  -x ARGS, --extra-args=ARGS                        Extra command-line arguments, with processing for                        spaces, quotes, and backslashes  -X ARG, --extra-arg=ARG                        Extra command-line argument  -i, --inline          inline aggregated output and error for each server  --inline-stdout       inline standard output for each server  -I, --send-input      read from standard input and send as input to ssh  -P, --print           print output as we get itExample: pssh -h hosts.txt -l irb2 -o /tmp/foo uptime

 (3) 使用主机文件列表执行pwd命令

#pssh -h ip.txt -A -i pwdWarning: do not enter your password if anyone else has superuserprivileges or access to your account.Password: [1] 19:58:51 [SUCCESS] root@192.168.200.152/root[2] 19:58:51 [SUCCESS] root@192.168.200.154/root[3] 19:58:51 [SUCCESS] root@192.168.200.153/root[4] 19:58:52 [SUCCESS] root@192.168.200.155/root

说明: -h 后面的ip是要操作的机器ip列表,格式如下: root@192.168.200.152   -A 表示手动输入密码模式  -i表示要执行的命令

  (4) 使用主机文件列表执行date命令  

#pssh -h ip.txt -A -i dateWarning: do not enter your password if anyone else has superuserprivileges or access to your account.Password: [1] 20:13:36 [SUCCESS] root@192.168.200.1522016年 07月 11日 星期一 20:10:24 CST[2] 20:13:36 [SUCCESS] root@192.168.200.1542016年 07月 11日 星期一 20:10:11 CST[3] 20:13:36 [SUCCESS] root@192.168.200.1532016年 07月 11日 星期一 20:10:56 CST[4] 20:13:36 [SUCCESS] root@192.168.200.1552016年 07月 11日 星期一 20:10:10 CST

(5) 指定用户名

#可以通过-l命令指定用户名$pssh -h ip.txt -A -i -l root dateWarning: do not enter your password if anyone else has superuserprivileges or access to your account.Password: [1] 20:13:36 [SUCCESS] 192.168.200.1522016年 07月 11日 星期一 20:10:24 CST[2] 20:13:36 [SUCCESS] 192.168.200.1542016年 07月 11日 星期一 20:10:11 CST[3] 20:13:36 [SUCCESS] 192.168.200.1532016年 07月 11日 星期一 20:10:56 CST[4] 20:13:36 [SUCCESS] 192.168.200.1552016年 07月 11日 星期一 20:10:10 CST

(6) 批量初始化服务器key

#让远程服务自动在/root/.ssh生成秘钥,方便部署证书信任pssh -h host1.txt -l root -A "ssh-keygen -t rsa -f /root/.ssh/id_rsa -P \"\""

(7)批量修改机器密码

pssh -h host.txt -l root -A 'echo root:xxxxxxxx | chpasswd'(8)

(8)pscp拷贝文件到远程主机

pscp  -h  ip.txt /etc/wenjian.txt   /tmp/

(9)pnuke杀掉某一进程

这个命令类似yu  killall命令pnuke  -h  iplist.txt   httpd

上边的意思是在远程主机上批量关闭httpd服务

能通过killall关闭的服务,都可以通过pnuke来批量完成

(10)pslurp 远程主机拷贝文件到本地主机

pslurp -h iplist.txt -L /home/ /hose/wenjian/yuanc.conf open.conf

上边是,将所有远程主机/hose/wenjian/yuanc.conf复制到本地主机/home/目录下,并且重新命名为open.conf  -L 来指定本地文件路径

(11)拷贝目录

pslurp -h iplist.txt -r -L /home/ /hose/wenjian/ open

ps:建议分发文件,执行命令,批量杀死进程,使用pssh,pscp,pnuke,速度很快的

4. 介绍软件包内其他命令

     pscp   传输文件到多个hosts,他的特性和scp差不多
# 通过pscp对多个机器传文件,把test.sh传送到多个机器上$ pscp.pssh -h host.txt -l root -A test.sh  使用pscp对多个机器传文件,然后再通过pssh执行脚本,方便快捷

5.

场景:目标命令中含有特殊符号,导致pssh批量执行可能出问题。

用法:

pssh -h ip.txt -i -I < /datas/1.sh
pssh -h RemoteHosts.ip -P -I < ~/LocalScript.sh

 6.pssh工具包主要有5个程序:

(假设ssh已做好SSH信任,如果没有的话会要求输入密码关于ssh信任可以参考)

pssh 多主机并行运行命令pscp 传输文件到多个hosts,他的特性和scp差不多pslurp 从多台远程机器拷贝文件pnuke kill远程机器的进程pslurp 从远程主机考本文件到本地prsync 使用rsync协议从本地计算机同步到远程主机

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

[root@centos pssh-2.3]# prsync -h host.txt -l root -a -r /etc/sysconfig /tmp/[1] 11:38:47 [SUCCESS] 192.168.1.199表示将本地的/etc/sysconfig目录递归同步到目标服务器的 /tmp/目录下,并保持原来的时间戳,使用用户 root

8.pnuke 并行在远程主机杀进程:(慎用)

[root@centos pssh-2.3]# pnuke -h host.txt syslog[1] 11:45:12 [SUCCESS] 192.168.1.199//杀死目标服务器的syslog进程

 9.卸载

tar zxvf pssh-1.4.3.tar.gz cd pssh-1.4.3/python setup.py installcd ..ssh-keygen -t dsassh-copy-id -i /root/.ssh/id_dsa.pub localhostpssh -H localhost dateps axfrm -rf pssh-1.4.3 ps axf再次安装tar zxvf pssh-1.4.3.tar.gz cd pssh-1.4.3/python setup.py install  --record logName   记录安装后文件的路径cat logName | xargs rm -rf   删除这些文件locate pssh rm -rf /usr/lib/python2.7/site-packages/pssh-2.3.1-py2.7.egg-info 删除pssh -H localhost date

 

转载于:https://www.cnblogs.com/yinfutao/p/9906921.html

你可能感兴趣的文章
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>
引用 移植Linux到s3c2410上
查看>>
MySQL5.7开多实例指导
查看>>
[51nod] 1199 Money out of Thin Air #线段树+DFS序
查看>>
poj1201 查分约束系统
查看>>
Red and Black(poj-1979)
查看>>
分布式锁的思路以及实现分析
查看>>
腾讯元对象存储之文件删除
查看>>
jdk环境变量配置
查看>>
安装 Express
查看>>