自动化运维利器---pssh

简介:

     有的公司,机房有60台服务器,有的公司机房有3000台服务器,还有的更多!这么多的服务器,要执行相同的系统配置操作,怎么办?

     答案1:   一台一台的部署,有点活活累死的感觉!

     答案2:  写SHELL脚本,一回车,全部机器就都执行了。是个办法,但是效率很低,不是吗?!

     答案3 :    用pssh,它是运维利器啊!


pssh:   parallel-ssh ,即并行ssh,是一个用Python编写的工具,作用就是并行在多台服务器上执行命令。比如,在晚上12:00 分这个时间,同时在3000台服务器上执行同一个命令!


    pssh是一个非常简单的工具,说白了就是一个小软件!简单好用的小软件!所以,希望你不要一看见陌生的东西,就有“畏生心理”,就不看了,实际上,它是只小蚂蚁,你随时可以掌握它,简单易用!

      

    它的亮点:  文件并行复制、 远程执行并行命令、杀掉远程主机上的进程。这就是我们用它的理由!

     

    (一) 安装pssh这个工具包之前,先干一件事,就是保证本地主机和要管理的远程主机之间的单向信任。说白了,就是要在本地主机和远程所有的服务器上面配置密钥认证访问。

               你可以理解为要认识pssh这个姑娘,首先要认识她的闺蜜,通过她的闺蜜,认识pssh!

             (1)   在本地主机上创建RSA密钥和公钥

                    a.  本地主机上以user01用户登录

                    b.  在 user01的根目录内创建  .ssh   目录并设置读取权限,你 没 看错,ssh前面有个点

                            $     mkdir     ~/.ssh                    //  $ 符号代表是以普通用户登录的

                            $     chmod 700  ~/.ssh

                    c.  使用ssh-keygen 命令 生成基于SSH协议的RSA密钥

                            $   cd   ~/.ssh        

                            $  ssh-keygen -t rsa                        //-t的意思是指定类型(type),rsa类型

                        ssh-keygen 这个命令执行完后,会提示 保存私钥(key)和公钥(public key)的位置,选择默认值,然后依次按回车键即可。

               (2)  整合公钥文件

                        在本地上继续以user01用户登录,执行如下操作:

                            $  cd  ~/.ssh

                            $  cat   /home/user01/.ssh/id_rsa.pub  > authorized_keys    

                            $  chmod 600 ~/.ssh/authorized_keys

                            $ scp authorized_keys   user02@192.168.100.100:/home/user02/.ssh/


    上面这4条命令,将本地节点生产的公钥整合到一个authorized_keys文件中,然后进行授权,再然后把authorized_keys复制到所有的远程主机上。这里以user02为例。

                  (3)  测试SSH密钥认证

                            在本地上以user01用户登录,然后:

                            $  ssh user02   date

        如果不需要输入密码,就证明SSH单向信任已经配置成功了。说明你已经认识pssh这个姑娘的闺蜜了,剩下的就是这个闺蜜帮你牵线了。


        (二)  安装pssh

         因为你已经认识了pssh的闺蜜(SSH单向信任),这个闺蜜为你说了不少好话,你可以直接追pssh这个姑娘了。

              先在网上下载pssh-1.4.2.tar.gz

                              #    tar -zxvf  pssh-1.4.2.tar.gz      //用root用户解压

                              #    cd pssh-1.4.2

                              #  python setup.py install    //一回车,就OK了。简单吧,安装完成了。多亏了之前认识了她的闺蜜。

   

       (三)  pssh应用实例   (和pssh这个姑娘相处过程,好好学,好好相处)

                $ pssh   -H user02@192.168.100.100  -P date       //-H 后面跟主机名或者IP, -P 是在执行命令时,输出命令结果

                $ pssh -H  user02@192.168.100.100 -i   date      //-H 后面跟主机名或者IP,-i 也是显示命令结果。

                 $ pssh -i -O "StrictHostKeyChecking=no"  -h  /etc/pssh/hosts   "uptime"  //-O 后面跟SSH的具体配置参数,“StrictHostKeyChecking=no”是sshd_config里面的一个配置选项,可以让远程主机自动接 受本地主机的hostkey,而不用每次都输入yes.  -h  是跟一个服务器列表,/etc/pssh/hosts这个文件是我自己建的,在里面写上所有要远程的主机名或者IP。比如:

                        #more /etc/pssh/hosts

                        user02@192.168.100.100


                 $  pssh -i -h /etc/pssh/hosts "sudo "tar -zxvf /root/hadoop-2.0.0.tar.gz ""         //这个命令用sudo了,解压hadoop-2.0.0.tar.gz这个压缩包。

            类似的命令:

              $  pssh -i -h /etc/pssh/hosts   "sudo "yum install pssh -y""

              $ pssh -i -h /etc/pssh/hosts "sudo "/etc/init.d/httpd restart""

        一个pssh的综合英语实例:

              $  pssh -i -x "-l user02"   "-p 9529"   -h   /etc/pssh/hosts    -o /etc/pssh/info "uptime;ls"

          //上面的-x参数,分别调用了“-l" "-p",用户指定在远程主机上登录的用户名和SSH端口,而"-o" 参数将指定结果存放到/etc/pssh/info目录中。在这个实例的最后,指定了2个命令,它们之间用分号隔开!


上面就是pssh这个姑娘的大体上的性格!难么?相处熟了,一点都不难!

    

  (四)  认识pscp  与  pslurp   (pssh的姐姐和pssh 的哥哥)

      pscp  的作用是将本地文件并行复制到远程多台主机上,而pslurp是把文件从远程多台主机复制到本地主机!在运维工作中,要进行文件批量传送时,pssh的姐姐和pssh的哥哥非常管用。


     $  pscp -h  /etc/pssh/hosts  /etc/ssh/sshd_config   /tmp     //这个命令把本地的sshd_config 复制到了远程主机的/tmp目录下,远程主机的名字在/etc/pssh/hosts里面记录着。

     $  pscp -h /etc/pssh/hosts/   -r /etc/httpd/conf   /tmp       //-r的目的是递归复制,把目录中的文件全部复制过去。

    $  pslurp  -h /etc/pssh/hosts   -L  /home/user01/bendi     /home/user02/gmond.conf gmond1.conf             //-L  是指定本地的主机路径,这句话的意思是把远程主机上的gmond.conf复制到本地的/home/user01/bendi目录下,并且改名为 gmond1.conf.

     $  pslurp  -h /etc/pssh/hosts   -r    -L  /home/user01/bendi     /home/user02/gmond.conf gmond1.conf             //-r   是递归复制,作用和上面命令的作用基本相同,-r 和-L 顺序不能颠倒。


  (五)  认识prsync  和pnuke  (pssh的姑姑和pssh的叔叔)

            pssh的姑姑---prsync,可以通过rsync协议将文件或者目录从本地主机远程同步到多个主机

            pssh的叔叔---pnuke ,可以在远程主机上并行杀掉某一进程,相当于killall,它的叔叔比较狠!


          $  prsync  -h  /etc/pssh/hosts   -l  user02  -a   -r  /etc/httpd   /tmp     //-l   是指定远程主机上的用户,-r的递归复制,-a  可以保持复制过去的文件属性不变,比如创建时间,修改时间,读取权限等


          $  prsync  -h  /etc/pssh/hosts   -l  user02  -az  -r  /etc/httpd   /tmp     //-az  ,-a是保持文件属性不变,-z是一个压缩传输参数。在低宽带环境下,或者对网络宽带有要求,传输文件压缩比大时可以使用。    但是在带宽充足或者传输的文件比较大,不推荐使用。


         $  pnuke -h /etc/pssh/hosts   httpd

    这个命令将在远程主机上并行关闭httpd,类似与killall,后面跟的是httpd是服务名,只要通过killall命令能关闭的服务,都可以通过pnuke来批量完成


   就是这些,说完了。  

附:

     -h      后面跟 远程主机列表文件,内容格式为[user@]host[:port]

     -H      后面跟一个远程主机名或IP地址。

     -l        后面跟远程主机上的用户名

     -p      指定pssh最大并行线程数,比如:pssh -p 10

     -o      指定输入的内容重定向到一个制定的文件中

     -O     指定SSH参数 具体配置

     -e      将执行错误冲定向到指定一个文件中

     -t       设置命令执行的超时时间

     -A      提示输入密码,并 把密码传递给SSH服务

     -x      用于传递ssh命令的一些参数,每个参数用引号引起来,例如: pssh -x "-l user02" "-p 22"

     -i       命令完成后显示标准输出和标准错误

    -P       输出执行结果



写的有些急促,难免有些错误或不恰当的地方,请批评指正,谢谢!


本文转自 曾国藩_6868 51CTO博客,原文链接:http://blog.51cto.com/8184069/1721223


相关文章
|
6月前
|
运维 Shell Linux
Ansible自动化运维工具之常用模块使用实战(5)
Ansible自动化运维工具之常用模块使用实战(5)
|
6月前
|
运维 Linux
Ansible自动化运维工具之常用模块使用实战(6)
Ansible自动化运维工具之常用模块使用实战(6)
|
7月前
|
运维 固态存储 定位技术
Ansible_自动化运维实战(一)
Ansible_自动化运维实战(一)
|
11月前
|
运维 自然语言处理 Shell
自动化运维工具-Ansible实战指南
自动化运维工具-Ansible实战指南
160 0
|
运维 Kubernetes Shell
自动化运维利器Ansible要点汇总
大部分互联网公司服务器环境复杂,若手工一台台部署效率低下,且容易出错,不利后期运维,因此需要Ansible或者Saltstack来解决此问题
266 0
|
运维 网络安全 安全
Ansible-自动化运维工具介绍
Ansible基础介绍和调试使用技巧
973 0
Ansible-自动化运维工具介绍
|
运维 网络协议 网络安全
自动化运维工具 puppet安装部署
Puppet部署与应用 前言:到目前为止,我们已经搭建了很多的服务器,每一台服务器都需要执行很多的命令,给我的感觉是实验不难,原理也好理解,就是命令太麻烦。如果只管理几台服务器,命令多点也没什么,但是如果管理着成百上千台服务器,可以想象一下,工作量将是多么的庞大。
1377 0
|
运维 网络安全 Python
自动化运维之PSSH
1.PSSH简介 PSSH提供OpenSSH和相关工具的并行版本。包括pssh,pscp,prsync,pnuke和pslurp。该项目包括psshlib,可以在自定义应用程序中使用。 pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。
1574 0
|
运维 网络安全 数据安全/隐私保护
|
运维 Oracle 关系型数据库