Pssh

pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,,当进行再远程主机批量上传下载的时候,最好使用它。
在使用pssh之前,必须要保证管理主机和本地主机进行过密钥的认证,或者是在进行批量时,没有做过密钥认证,但是必须保证被管理的多台主机的密码相同。
环境准备

Redhat 7.4 三台
Centos 1.4一台
10.155.155.10
10.155.155.20
10.155.155.30
10.155.155.40

一、编译安装
[root@localhost ~]# tar zxf pssh-2.3.1.tar.gz
[root@localhost ~]# cd pssh-2.3.1
[root@localhost pssh-2.3.1]# python setup.py install
pssh:在远程多台主机上并行运行命令
pscp :把文件并行复制到多台远程主机上
prsync:使用rsync协议本地文件同步到远程多台主机上。
pnuke:在远程多台主机上并行killall某一进程
pslurp:把文件从远程多台主机上复制到本地主机上

二、pssh 参数
2.1
[root@localhost pssh-2.3.1]# 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_FILEhosts file (each line "[user@]host[:port]")-H HOST_STRING, --host=HOST_STRINGadditional host entries ("[user@]host[:port]")-l USER, --user=USER  username (OPTIONAL)-p PAR, --par=PAR     max number of parallel threads (OPTIONAL)-o OUTDIR, --outdir=OUTDIRoutput directory for stdout files (OPTIONAL)-e ERRDIR, --errdir=ERRDIRoutput directory for stderr files (OPTIONAL)-t TIMEOUT, --timeout=TIMEOUTtimeout (secs) (0 = no timeout) per host (OPTIONAL)-O OPTION, --option=OPTIONSSH option (OPTIONAL)-v, --verbose         turn on warning and diagnostic messages (OPTIONAL)-A, --askpass         Ask for a password (OPTIONAL)-x ARGS, --extra-args=ARGSExtra command-line arguments, with processing forspaces, quotes, and backslashes-X ARG, --extra-arg=ARGExtra 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
--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:打印出服务器返回信息

2.2

具体常用介绍

-h   HOST_FILE   后边跟远程主机列表(ip)
-H   HOST_STRING   后边跟远程主机名或者ip地址
-l   USER  指定远程主机的用户名
-p  PAR   指定pssh最大的并行线程数。
-o  将输出的内容重定向到一个指定的文件中
-O 指定ssh参数的具体配置
-e  将执行错误重定向到一个指定的文件中
-t  设定命令执行超时时间
-x  传递ssh命令的一些参数
-i  在远程主机上执行命令完成后显示标准输出和标准错误
-P  在执行远程命令时,输出执行结果

三、示例
1)获取每台服务器的uptime

查看主机列表
[root@localhost ~]# cat ip.txt
root@10.155.155.20
root@10.155.155.30
root@10.155.155.40
执行命令
[root@localhost ~]# pssh -h 10.155.155.20 -i uptime
Could not open hosts file: No such file or directory
[root@localhost ~]# pssh -h ip.txt -i uptime
[1] 13:45:35 [SUCCESS] root@10.155.155.2009:45:35 up  2:37,  1 user,  load average: 0.00, 0.01, 0.05
[2] 13:45:35 [SUCCESS] root@10.155.155.3001:45:35 up  3:43,  0 users,  load average: 0.00, 0.01, 0.05
[3] 13:45:35 [SUCCESS] root@10.155.155.4001:45:35 up  3:37,  0 users,  load average: 0.00, 0.01, 0.05
2)执行单个ip
[root@localhost ~]# pssh -h 10.155.155.20 -i uptime
Could not open hosts file: No such file or directory
[root@localhost ~]# pssh -H 10.155.155.20 -i uptime
[1] 13:46:52 [SUCCESS] 10.155.155.2009:46:53 up  2:38,  1 user,  load average: 0.00, 0.01, 0.05
2)保存每台服务器运行的结果
[root@localhost ~]# pssh -h ip.txt -i -o /tmp/pssh/ uptime
[1] 13:52:43 [SUCCESS] root@10.155.155.2009:52:43 up  2:44,  1 user,  load average: 0.01, 0.02, 0.05
[2] 13:52:43 [SUCCESS] root@10.155.155.3001:52:43 up  3:51,  0 users,  load average: 0.00, 0.01, 0.05
[3] 13:52:43 [SUCCESS] root@10.155.155.4001:52:43 up  3:44,  0 users,  load average: 0.00, 0.01, 0.05
[root@localhost ~]# ls /tmp/pssh/
root@10.155.155.20  root@10.155.155.30  root@10.155.155.40
3)pscp拷贝文件到远程主机
[root@localhost ~]# pscp -h ip.txt /root/expect.sh /tmp/
[1] 13:57:41 [SUCCESS] root@10.155.155.20
[2] 13:57:41 [SUCCESS] root@10.155.155.40
[3] 13:57:41 [SUCCESS] root@10.155.155.30
[root@localhost ~]# pssh -h ip.txt -i ls /tmp/
[1] 13:58:18 [SUCCESS] root@10.155.155.20
expect.sh
systemd-private-97ff18ee9e6341f6ad475f452d152c6f-chronyd.service-LuFptJ
systemd-private-97ff18ee9e6341f6ad475f452d152c6f-vgauthd.service-Fdu6zy
systemd-private-97ff18ee9e6341f6ad475f452d152c6f-vmtoolsd.service-NA1I7n
[2] 13:58:18 [SUCCESS] root@10.155.155.40
expect.sh
systemd-private-c1676ded76c24586a7539c379be7b45f-chronyd.service-oWTa5k
systemd-private-c1676ded76c24586a7539c379be7b45f-vgauthd.service-XhqOJD
systemd-private-c1676ded76c24586a7539c379be7b45f-vmtoolsd.service-P0RN9Y
[3] 13:58:18 [SUCCESS] root@10.155.155.30
expect.sh
systemd-private-d8e1d0054ea44fd39fccfad8fa818a7b-chronyd.service-5IH50N
systemd-private-d8e1d0054ea44fd39fccfad8fa818a7b-vgauthd.service-yxejqd
systemd-private-d8e1d0054ea44fd39fccfad8fa818a7b-vmtoolsd.service-kAuAIv
[root@localhost ~]# pssh -h ip.txt -i ls /tmp/|grep expect.sh
expect.sh
expect.sh
expect.sh
4)pnuke杀掉某进程
[root@localhost ~]# pssh -h ip.txt -i "yum install httpd -y"
[root@localhost ~]# pssh -h ip.txt -i "systemctl start httpd"
[1] 14:01:02 [SUCCESS] root@10.155.155.20
[2] 14:01:02 [SUCCESS] root@10.155.155.30
[3] 14:01:02 [SUCCESS] root@10.155.155.40
[root@localhost ~]# pnuke -h ip.txt httpd
[1] 14:01:27 [SUCCESS] root@10.155.155.20
[2] 14:01:27 [SUCCESS] root@10.155.155.30
[3] 14:01:27 [SUCCESS] root@10.155.155.40
5)远程主机拷贝文件到本地主机
[root@localhost ~]# pslurp -h ip.txt  -L /tmp/ /tmp/expect.sh expect.exp
[1] 14:13:27 [SUCCESS] root@10.155.155.40
[2] 14:13:27 [SUCCESS] root@10.155.155.20
[3] 14:13:27 [SUCCESS] root@10.155.155.30
将远程主机tmp下expect.sh复制到本地tmp下 并重新命名为expect.exp
[root@localhost ~]# ls /tmp/
[root@localhost ~]# tree /tmp/
/tmp/
├── 10.155.155.20│   └── expect.exp
├── 10.155.155.30
│   └── expect.exp
├── 10.155.155.40
│   └── expect.exp
把远程主机/root/.ssh/目录拷贝到本地opt下
[root@localhost ~]# pslurp -h ip.txt -r -L /opt/ /root/.ssh/ miyao
[1] 14:18:52 [SUCCESS] root@10.155.155.20
[2] 14:18:52 [SUCCESS] root@10.155.155.30
[3] 14:18:52 [SUCCESS] root@10.155.155.40
[root@localhost ~]# tree /opt/
/opt/
├── 10.155.155.20
│   └── miyao
│       ├── authorized_keys
│       ├── id_rsa
│       └── id_rsa.pub
├── 10.155.155.30
│   └── miyao
│       ├── authorized_keys
│       ├── id_rsa
│       └── id_rsa.pub
└── 10.155.155.40└── miyao├── authorized_keys├── id_rsa└── id_rsa.pub6 directories, 9 files

pssh批量执行命令相关推荐

  1. pssh远程批量执行命令

    Pssh pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上 ...

  2. Scp远程批量执行命令

    一次拷贝多个文件或者目录 # scp root@192.168.9.142:/usr/local/src/cp_dir/*.php /usr/local/src/ //拷贝多个文件 # scp -r ...

  3. pssh批量执行启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

    文章目录 问题描述 问题分析 解决问题 问题描述 我这边一共4台主机,4台主机tomca路径一致.我想想通过pssh命令工具直接将4台主机的tomcat启动,命令如下: [root@hadoop-ma ...

  4. Spark-shell 脚本批量执行命令,命令行批量执行命令

    spark-shell 执行脚本,批量执行命令 #!/bin/bashsource /etc/profileexec spark-shell --name spark-sql-test --execu ...

  5. Python 实现远程服务器(ssh)批量执行命令

    paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...

  6. Go 版批量执行命令工具

    ansible 真的太慢了,而且依赖对端python环境,对于交换机,分流等基于ssh连接的网络设备就没办法了.用的最多的是批量执行命令和下发文件, 我们就借鉴ansible的执行方式,先准备yaml ...

  7. linux批量执行命令脚本,2.3-命令批量执行脚本

    命令批量执行脚本,同样需要两个脚本来实现:1 exe.expect 2 exe.sh 3 ip.list    IP列表 cat exe.expect #!/usr/bin/expect set ho ...

  8. 基于pam实现的批量执行命令工具-Cyberark

    无2fa版本: #!/usr/bin/python # -*- coding: UTF-8 -*- #换了一种方式登录 #每天早上九点到晚上十点执行,每半小时一次,每次20台,大概4天-5天可以执行完 ...

  9. expect批量执行命令

    在跳板机上执行脚本,登录到远程机器分区格式化挂载命令 #/bin/bash passwd='engine' /usr/bin/expect << EOF set time 40 spawn ...

最新文章

  1. AI伪装目标检测:让变色龙现出原形!
  2. jmeter压测_jmeter压测学习2linux运行jmeter环境
  3. arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
  4. Android消息机制——时钟显示和异步处理工具类(AsyncTask)
  5. javaweb-服务器输出字符数据到浏览器
  6. 输出注册信息javabean
  7. OWASP-ZAP扫描器的使用(攻击)
  8. 程序员的“黄金时代”,死去又重来?
  9. fastjson--JSON.toJSONString(OBJ) 报错
  10. 弹出ifame页面(jquery.reveal.js)
  11. 15.UNIX 环境高级编程--进程间的通信
  12. 转载:jillzhang的文章索引 包括(Nhiberate,WCF,WPF,项目管理等内容)
  13. 知网论文复制格式问题-文本修改器
  14. 百钱买百鸡问题的最优解法
  15. mysql distance()_mysql距离函数st_distance
  16. 爬取分析拉勾网招聘信息
  17. Python制做动态图
  18. Vim内同时对多行增加或删除相同的内容
  19. python实现Excel多行多列的转换
  20. 微信小程序导入云开发数据库表报错问题解决

热门文章

  1. 招聘高级Java-Web开发程序员(专职或兼职) - schoolmate
  2. 2021CCPC中国大学生程序设计竞赛女生专场 K 音乐游戏
  3. 用《王者荣耀》游戏玩家信息管理操作教会使用hbase
  4. linux复制文件permission denied
  5. 我做分析师的十年感受 ( 三 )
  6. 亚马逊两种运营模式对比FBA和FBM,哪个才是最好的选择呢?
  7. MPU6050电路自检失败解决方案
  8. 关于Word中审阅的一个问题!
  9. 01-Docker 概述与安装
  10. Offset函数,偏移变量注意是数值而不是数组