• pssh系列命令详解


    安装

    pssh提供OpenSSH和相关工具的并行版本。包括pssh,pscp,prsync,pnuke和pslurp。该项目包括psshlib,可以在自定义应用程序中使用。pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,,当进行再远程主机批量上传下载的时候,最好使用它。pssh用于批量ssh操作大批量机器;pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的;比起for循环的做法,更推荐使用pssh! (注意需要安装 python 2.4 或以上版本)

    下面是直接从源码进行编译安装的步骤,安装过程很快

    wget https://pypi.python.org/packages/60/9a/8035af3a7d3d1617ae2c7c174efa4f154e5bf9c24b36b623413b38be8e4a/pssh-2.3.1.tar.gz
    tar xf pssh-2.3.1.tar.gz -C /usr/local
    cd /usr/local/pssh-2.3.1/
    python setup.py install
    

    命令详解

    pssh --help可以查看命令参数选项:

    -l    远程机器的用户名
    -p    一次最大允许多少连接
    -o    输出内容重定向到一个文件
    -e    执行错误重定向到一个文件
    -t    设置命令执行的超时时间
    -A   提示输入密码并且把密码传递给ssh(注意这个参数添加后只是提示作用,随便输入或者不输入直接回车都可以,可以结合sshpass -p password使用)
    -O   设置ssh参数的具体配置,参照ssh_config配置文件
    -x   传递多个SSH 命令,多个命令用空格分开,用引号括起来
    -X   同-x 但是一次只能传递一个命令
    -i   显示标准输出和标准错误在每台host执行完毕后
    -I   读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入
    

    pssh、pscp、prsync、pnuke和pslurp的具体使用:

    #注:在使用工具前,确保主机间做了密钥认证,否则无法实现自动化,当然我们可以使用sshpass(yum install sshpass)配合pssh -A参数实现自动输入密码,但这要保证多台主机的密码相同,同时还要注意如果known_hosts没有信任远程主机,那么命令执行会失败,可以加上-O StrictHostKeyChecking=no参数解决,ssh能用的选项pssh也能用
    
    # 集群刚装好系统处于原始状态,可以使用下面命令来生成其他机器的ssh秘钥并将各机器的rsa公钥添加到本机
    sshpass -p password pssh -I -A -O StrictHostKeyChecking=no -h ip.txt -l brooksj -i "ssh-ketgen"  # 然后本机回车10次帮助各机器生成ssh秘钥,password为其它机器的统一密码
    sshpass -p password pssh -A -O StrictHostKeyChecking=no -h ip.txt -l brooksj -i "ssh-copy-id localhost-ip" # localhost-ip改成你本机的ip
     
    #pssh 远程批量执行命令 
    pssh -h ip.txt -P "uptime" 
    #-h  后面接主机ip文件,文件数据格式[user@]host[:port]
    #-P  显示输出内容
    #如果没办法密钥认证.可以采用下面方法,但不是很安全
    sshpass -p 123456 pssh -A -h ip.txt -i "uptime"
     
    #pscp 并行传输文件到远端
    #传文件,不支持远程新建目录
    pscp -h ip.txt test.py /tmp/dir1/
    #传目录
    pscp -r -h ip.txt test/ /tmp/dir1/
     
    #prsync 并行传输文件到远端
    #传文件,支持远程新建目录,即目录不存在则新建
    prsync -h ip.txt test.py /tmp/dir2/
    #传目录
    prsync -r -h ip.txt test/ /tmp/dir3/
     
    #pslurp从远程拉取文件到本地,在本地自动创建目录名为远程主机ip的目录,将拉取的文件放在对应主机IP目录下
    #格式:pslurp -h ip.txt -L <本地目录>  <远程目录/文件>  <本地重命名>
    #拉取文件
    pslurp -h ip.txt -L /root/ /root/1.jpg picture
    ll /root/172.16.1.13/picture
    -rw-r--r-- 1 root root 148931 Jan  9 15:41 /root/172.16.1.13/picture
    #拉取目录
    pslurp -r -h ip.txt -L /root/ /root/test temp
    ll -d /root/172.16.1.13/temp/
    drwxr-xr-x 2 root root 23 Jan  9 15:49 /root/172.16.1.13/temp/
     
    #pnuke:远程批量killall
    pnuke -h ip.txt nginx
    
  • 相关阅读:
    题解45 跳跃游戏 II
    《重构》第八章阅读总结
    Scala学习笔记一
    Java初学随笔
    染色算法总结
    BingMap
    Google Earth API 替换方案
    本周安排
    OleDb 内存泄露问题
    css3 布局
  • 原文地址:https://www.cnblogs.com/brooksj/p/11695224.html
Copyright © 2020-2023  润新知