pssh一个微量级自动化工具

一、pssh简介

pssh是一个python编写可以在多台服务器上执行命令的工具,也可实现文件复制。pssh需要通过ssh的key验证来管理主机,其不能很好的支持密码验证。用过epel源的pssh包来安装

二、pssh选项

pssh [OPTIONS] command […]

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

常用选项:-H  、-h 、-i、

三、示例

joker ~ #  pssh -H root@172.18.30.254 -i sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config  
[1] 02:56:19 [SUCCESS] root@172.18.30.254

-H表示指定主机
-i表示在本地输出执行结果


joker ~ # echo -e "172.18.30.254
172.18.30.253" >ip.txt 
joker ~ # cat ip.txt 
172.18.30.254
172.18.30.253
joker ~ # pssh -h ip.txt -i echo "ok"
[1] 02:58:29 [SUCCESS] 172.18.30.254
ok
[2] 02:58:29 [SUCCESS] 172.18.30.253
ok

通过  -h选项,读取ip.txt文件(批量保存ip的列表),达到批量执行任务的目的。


如果钥调用远程的变量,那么需要把需要在远程主机执行的命令用单引号引起来,否则调用的是本地的变量

  1. joker ~ # pssh -h ip.txt -i echo "ok"
  2. [1] 02:58:29 [SUCCESS] 172.18.30.254
  3. ok
  4. [2] 02:58:29 [SUCCESS] 172.18.30.253
  5. ok
  6. joker ~ # pssh -h ip.txt -i echo "$HOSTNAME"
  7. [1] 03:01:25 [SUCCESS] 172.18.30.254
  8. joker
  9. [2] 03:01:25 [SUCCESS] 172.18.30.253
  10. joker
  11. joker ~ # pssh -h ip.txt -i echo '$HOSTNAME'
  12. [1] 03:01:34 [SUCCESS] 172.18.30.254
  13. joker-6-01
  14. [2] 03:01:34 [SUCCESS] 172.18.30.253
  15. newhostname

如果要使用基于密码的方式去连接主机可以加-A选项,但是这个工具只会提示输入一次密码,也就是说,在批量执行的过程中,所有的主机密码都是相同的,在工作中,显然这样是不合要求的,所以这种方式一般是不使用的。

四、基于pssh的pscp.pssh

功能是将本地文件批量复制到远程主机

Pscp-pssh选项

-v 显示复制过程
-a 复制过程中保留常规属性
-r 递归复制目录

joker ~ # pscp -h ip.txt /root/ip.txt ~/   #gentoo系统和centos的有些区别,但是参数格式是一样的
[1] 03:07:43 [SUCCESS] 172.18.30.254
[2] 03:07:43 [SUCCESS] 172.18.30.253

将本地ip.txt 拷贝到远程目标主机上

五、基于pssh的pslurp.pssh命令

功能是将远程主机的文件批量复制到本地

Pslurp-pssh选项

-L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称
-r 递归复制目录

joker ~ # pslurp -h ip.txt -L /app/ /etc/passwd passwd
[1] 03:15:43 [SUCCESS] 172.18.30.254
[2] 03:15:43 [SUCCESS] 172.18.30.253

joker ~ # cd /app/
joker /app # ls -l
total 0
drwxr-xr-x 2 root root 42 Jan  9 03:15 172.18.30.253
drwxr-xr-x 2 root root 42 Jan  9 03:15 172.18.30.254
joker /app # cd 172.18.30.254
joker /app/172.18.30.254 # ls
passwd

-L指定保存到本地的哪个目录
倒数第二个参数表示要在在远程主机下载的文件
paswd表示要更换的名字(必须有这一项,否则会报错)
原文地址:https://www.cnblogs.com/momenglin/p/8486105.html