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..tar.gz
cd pssh-2.3./
python setup.py install

2. pssh选项说明

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

3. 实例

 (1) 查看版本 

#pssh --version
#2.3.

(2) 查看帮助

#pssh --help
Usage: 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) ( = 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 it Example: pssh -h hosts.txt -l irb2 -o /tmp/foo uptime

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

#pssh -h ip.txt -A -i pwd
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[] :: [SUCCESS] root@192.168.200.152
/root
[] :: [SUCCESS] root@192.168.200.154
/root
[] :: [SUCCESS] root@192.168.200.153
/root
[] :: [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 date
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[] :: [SUCCESS] root@192.168.200.152
2016年 07月 11日 星期一 :: CST
[] :: [SUCCESS] root@192.168.200.154
2016年 07月 11日 星期一 :: CST
[] :: [SUCCESS] root@192.168.200.153
2016年 07月 11日 星期一 :: CST
[] :: [SUCCESS] root@192.168.200.155
2016年 07月 11日 星期一 :: CST

(5) 指定用户名

#可以通过-l命令指定用户名
$pssh -h ip.txt -A -i -l root date
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[] :: [SUCCESS] 192.168.200.152
2016年 07月 11日 星期一 :: CST
[] :: [SUCCESS] 192.168.200.154
2016年 07月 11日 星期一 :: CST
[] :: [SUCCESS] 192.168.200.153
2016年 07月 11日 星期一 :: CST
[] :: [SUCCESS] 192.168.200.155
2016年 07月 11日 星期一 :: 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批量执行可能出问题。

用法:

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

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

(假设ssh已做好SSH信任,如果没有的话会要求输入密码关于ssh信任可以参考http://be-evil.org/linux-ssh-login-without-using-password.html)

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/
[] :: [SUCCESS] 192.168.1.199
表示将本地的/etc/sysconfig目录递归同步到目标服务器的 /tmp/目录下,并保持原来的时间戳,使用用户 root

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

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

9.卸载

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

最新文章

  1. js修改后没反应-看看是不是取的缓存
  2. C# 利用socekt做到http监听,怎么样才能做到高性能
  3. php中include()和require()的区别
  4. 一个Ubuntu源更新错误及解决办法
  5. QT笔记
  6. Nmap 使用指南
  7. Yii2学习笔记之场景
  8. 关于EF分页查询报错(Count must have a non-negative value.)的解决方案
  9. [转贴]一个将表格变成 INSERT 的SQL 语句的存储过程(sql server)
  10. linux 线程备忘
  11. word vbs脚本 设置所有题注样式为蓝色,下划线
  12. 如何快速禁用约束 (解决ORA-O2266问题)
  13. Java并发——CAS
  14. Web前端-Ajax基础技术(上)
  15. MQTT控制---subscribe
  16. 微服务框架——SpringCloud(二)
  17. HTML中Meta标签中http-equiv属性小结
  18. 恺撒密码 I Python实现
  19. [HDU2138]How many prime numbers
  20. mysql日志详解

热门文章

  1. luoguP2408不同子串个数
  2. python 基础(四) 函数
  3. python入门之正则表达式
  4. springBoot + mybatis实现执行多条sql语句出错解决方法
  5. 第十二章 设计用户界面 之 设计自适应的UI布局
  6. [转]AngularJS移动开发中的坑汇总
  7. SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解
  8. 模拟一次CSRF(跨站请求伪造)例子,适合新手
  9. spark基准测试-BigDataBenchs
  10. uvm_driver——老司机带带我