zoukankan      html  css  js  c++  java
  • pssh,pscp,pslurp使用实践

        因为常常须要到几十台机器上运行同样的命令,而眼下机器上还没有部署Saltstack或Puppet等集群化管理工具. 因为每台server上都使用同样的公钥,故之前都是写一些脚本:把IP 放到一个文件里,再依次从文件里读取一个IP ,通过SSH用密钥登录到目标机器上运行命令.刚開始使用的时候,认为还能够接受,至少比手动登录到每一台机机器上要省时省力.可是,后面发现有的机器SSH连接比較慢,须要等一会儿,因为是顺序的单进程运行,所以认为有点慢,想要更快一点. 后来.通过查阅,发现了pssh这个工具,于是就抽时间实践了一下,以下是我的一些实践跟使用心得(安装方法我就不在此叙述了):

         1. PSSH 的使用

         先看看说明文档:  man pssh

           

    OPTIONS
           -h host_file   # -h + 包括IP的文件名称
               --hosts host_file
           -H     [user@]host[:port]  # -H + <span style="font-family: Arial, Helvetica, sans-serif;">[用户@]主机IP[:端口]   [  ]内的是可选參数 ,若有多个主机,用" "引起来,主机之间用空格分开</span>
               --host [user@]host[:port]
           -H     "[user@]host[:port] [ [user@]host[:port ] ... ]"  
           <span style="white-space:pre">	</span>   --host "[user@]host[:port] [ [user@]host[:port ] ... ]"
           -l user   # -l + username(用于连接远程主机的username)
               --user user
           -p parallelism   # -p + 并发数
               --par parallelism
    
           -t timeout   # -t + 超时秒数
               --timeout timeout
           -o outdir   # -o + 输出文件夹  说明:会在该文件夹下创建  <span style="font-family: Arial, Helvetica, sans-serif;">[用户@]主机IP[:端口]</span><span style="font-family: Arial, Helvetica, sans-serif;">  格式的文件名称,用于保存输出结果</span>
               --outdir outdir
           -e errdir   # -e + 错误输出文件夹  
              --errdir errdir
           -x args  # -x + ssh连接时可提供的參数 ,例: -x "-o StrictHostKeyChecking=no" 表示跳过ssh链接时询问yes/no 
               --extra-args args  
           -X arg
               --extra-arg arg
                  
           -O options   # -O + SSH配置文件里的选项  能够出现多个 -O 选项
               --options options
           -A
               --askpass
           -i    # -i 參数用于将输出结果直接显示在当前终端
               --inline
                --inline-stdout
           -v  # -v 參数用于显示ssh连接时的错误信息
              --verbose
    
           -I
               --send-input
                  Read input and send to each ssh process.  Since ssh allows a command script to be sent on standard input, the -I option may be used in lieu of the command argument.
    
           -P      # -P 參数用于当主机连接上之后,输出运行结果 ,先输出运行结果,再显示连接的主机信息.
               --print
    
             
         pssh  -h i2.txt "ifconfig"     

            

        如之前没有从pssh所在主机连接到目标机器,则运行时一定要家參数  -x "-o StrictHostKeyChecking=no" ,没有加该參数的情况:

           

       因为尚未在该机器上通过ssh连接过 XXXX.104 和 XXX.70,所以运行命令失败,有时会使得所以主机上的命令都运行失败,加上  -x "-o StrictHostKeyChecking=no"  參数后:

           

       上面的命令仅仅显示是否运行成功,但未显示运行命令的输出结果, 须要加上 -i 參数:

            

         

       指定输出文件夹 -o 參数:

          

      2. pscp 用于将本地文件拷贝到远程主机

         pscp 跟pssh 的非常多參数都是一样的,故不再多说.

         -r 參数用于递归拷贝文件夹

         pscp -h ip文件 本地文件  远程文件夹

           

       3 . pslurp 用于将远程主机上的文件复制回本地

            pslurp 參数跟pscp參数一样

            -L  參数用于指定本地存放文件的文件夹

            plurp -L   -h ip文件  远程文件 本地名称

           尽管帮助文档里说 -L 參数是可选的,可是经过我的实验发现-L 应该是必须的否则会报错,实验结果例如以下:

           

         添加 -L  參数后,会在-L 指定的本地文件夹下创建  [用户@]主机IP[:port] 文件夹,相应的文件夹下用于存放从该主机复制过来的文件.

        4 . pnuke 用于批量远程结束进程

          pnuke 的參数与pssh一样,仅仅是最后的字符串为要结束的进程名称

         如:  pnuke -h i2.txt  httpd  表示结束 i2.txt文件里全部主机的 httpd进程


       以上仅个人实验和使用心得,用于备忘,也希望能帮到一些同学 !微笑

  • 相关阅读:
    编写通用shell脚本启动java项目,适用于多数服务,只需修改服务名即可
    linux操作系统安装jdk
    搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)
    二.传统服务的拆分策略
    一.把传统服务做成dubbo分布式服务架构的步骤
    Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验
    Android WebRTC 音视频开发总结(五)-- webrtc开发原型
    Android WebRTC 音视频开发总结(四)-- webrtc传输模块
    Android WebRTC 音视频开发总结(三)-- 信令服务和媒体服务
    Android WebRTC 音视频开发总结(二)-- webrtcdemo介绍
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5159268.html
Copyright © 2011-2022 走看看