zoukankan      html  css  js  c++  java
  • 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表示要更换的名字(必须有这一项,否则会报错)
  • 相关阅读:
    LeetCode-018-四数之和
    LeetCode-017-电话号码的字母组合
    LeetCode-016-最接近的三数之和
    LeetCode-015-三数之和
    LeetCode-014-最长公共前缀
    LeetCode-013-罗马数字转整数
    LeetCode-012-整数转罗马数字
    LeetCode-011-盛最多水的容器
    LeetCode-010-正则表达式匹配
    [leetcode]103. Binary Tree Zigzag Level Order Traversal二叉树Z形遍历
  • 原文地址:https://www.cnblogs.com/momenglin/p/8486105.html
Copyright © 2011-2022 走看看