zoukankan      html  css  js  c++  java
  • 轻量级自动化运维工具pssh与pslurp

    轻量级自动化运维工具pssh与pslurp

    pssh是一个基于Python编写,可在多台服务器上执行命令,文件的并行复制的工具

    要使用pssh工具包,必须配置本地主机和被管理的远程主机之间ssh单向的免秘钥认证

    1 安装

    # env Python 2.7.5
    wget https://pypi.python.org/packages/source/p/pssh/pssh-2.3.1.tar.gz
    tar zxvf pssh-2.3.1.tar.gz
    cd pssh-2.3.1
    python setup.py build
    python setup.py install
    pssh --version
    

    2 简单使用

    2.1 介绍

    • https://man.linuxde.net/pssh

    • pssh 多主机并行运行命令

    • pscp 传输文件到多个hosts,他的特性和scp差不多

    • pslurp 从多台远程机器拷贝文件

    • pnuke kill远程机器的进程

    • pslurp 从远程主机考本文件到本地

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

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

    2.2 执行命令

    pssh -ih hosts.list "ifconfig eth0 | grep inet | awk '{print $2}'"   # 执行命令
    pssh -ih hosts.list  -o /tmp/pssh/ uptime  # 执行结果输出到文件
    
    pscp -h hosts.list anaconda-ks.cfg /tmp/    #复制本地文件到远程主机
    pscp -h hosts.list -r /data /tmp/           # 递归复制文件本地文件到远程主机
    
    pslurp -h ecs1.nc -L /tmp/out/ /tmp/name hostname  # 复制远程主机/tmp/name文件到本地/tmp/out目录中,并重命名为hostname,本地目录会自动新建远程主机的名的目录
    
    prsync  -h hosts.list -r /mnt/ /mnt/
    
    pnuke -h hosts.list  nginx       # 批量杀死进程
    
    pssh -h host.ip -P -I < cmd.sh
    
    # 执行命令
    #pssh -ih hosts.list uptime
    [1] 16:56:57 [SUCCESS] 172.16.0.77
     16:56:57 up 297 days, 20:40,  0 users,  load average: 2.08, 1.99, 1.97
    [2] 16:56:57 [SUCCESS] 172.16.0.202
     16:56:57 up 297 days, 20:40,  0 users,  load average: 1.88, 2.03, 2.01
    [3] 16:56:57 [SUCCESS] 172.16.0.138
     16:56:57 up 297 days, 20:40,  0 users,  load average: 2.15, 2.15, 2.13
    [4] 16:56:57 [SUCCESS] 172.16.0.78
     16:56:57 up 297 days, 20:40,  0 users,  load average: 2.89, 2.68, 2.68
    [5] 16:56:57 [SUCCESS] 172.16.0.201
     16:56:57 up 297 days, 20:40,  0 users,  load average: 2.00, 2.02, 2.04
    [6] 16:56:57 [SUCCESS] 172.16.0.139
     16:56:57 up 297 days, 20:40,  0 users,  load average: 1.89, 1.91, 1.94
    
    #cat hosts.list
    172.16.0.77
    172.16.0.202
    172.16.0.139
    172.16.0.138
    172.16.0.78
    172.16.0.201
    
    # 命令结果到处到文件
    #pssh -h hosts.lsit  -o /tmp/pssh/ uptime
    [1] 17:05:01 [SUCCESS] 172.16.0.77
    [2] 17:05:01 [SUCCESS] 172.16.0.202
    [3] 17:05:01 [SUCCESS] 172.16.0.139
    [4] 17:05:01 [SUCCESS] 172.16.0.138
    [5] 17:05:01 [SUCCESS] 172.16.0.78
    [6] 17:05:01 [SUCCESS] 172.16.0.201
    #ll /tmp/pssh/
    total 24
    -rw-r--r-- 1 root root 72 May 31 17:05 172.16.0.138
    -rw-r--r-- 1 root root 72 May 31 17:05 172.16.0.139
    -rw-r--r-- 1 root root 72 May 31 17:05 172.16.0.201
    -rw-r--r-- 1 root root 72 May 31 17:05 172.16.0.202
    -rw-r--r-- 1 root root 72 May 31 17:05 172.16.0.77
    -rw-r--r-- 1 root root 72 May 31 17:05 172.16.0.78
    #cat /tmp/pssh/172.16.0.138
    17:05:01 up 297 days, 20:49,  0 users,  load average: 2.29, 2.12, 2.12
    
    # 拉取远程主机文件到本地,本地会自动建立对应的远程主机的目录
    #pslurp -h hosts.list -L /tmp/out/ /tmp/name hostname
    [1] 18:13:54 [SUCCESS] 172.16.0.77
    [2] 18:13:54 [SUCCESS] 172.16.0.202
    [3] 18:13:54 [SUCCESS] 172.16.0.139
    [4] 18:13:54 [SUCCESS] 172.16.0.78
    [5] 18:13:54 [SUCCESS] 172.16.0.138
    [6] 18:13:54 [SUCCESS] 172.16.0.201
    #tree /tmp/out/
    /tmp/out/
    ├── 172.16.0.138
    │   └── hostname
    ├── 172.16.0.139
    │   └── hostname
    ├── 172.16.0.201
    │   └── hostname
    ├── 172.16.0.202
    │   └── hostname
    ├── 172.16.0.77
    │   └── hostname
    └── 172.16.0.78
        └── hostname
    
    

    PS

  • 相关阅读:
    多表联合查询,利用 concat 模糊搜索
    order by 中利用 case when 排序
    Quartz.NET 3.0.7 + MySql 动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一)
    ASP.NET Core 2.2 基础知识(十八) 托管和部署 概述
    ASP.NET Core 2.2 基础知识(十七) SignalR 一个极其简陋的聊天室
    ASP.NET Core 2.2 基础知识(十六) SignalR 概述
    ASP.NET Core 2.2 基础知识(十五) Swagger
    ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
    linux磁盘管理 磁盘查看操作
    linux磁盘管理 文件挂载
  • 原文地址:https://www.cnblogs.com/firewalld/p/14832710.html
Copyright © 2011-2022 走看看