自动化运维利器---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   [email protected]:/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 [email protected]  -P date       //-H 后面跟主机名或者IP, -P 是在执行命令时,输出命令结果

$ pssh -H  [email protected] -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

[email protected]

$  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      后面跟 远程主机列表文件,内容格式为[[email protected]]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       输出执行结果

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

时间: 2024-07-30 22:25:10

自动化运维利器---pssh的相关文章

Ansible:分布式场景下的自动化运维利器实战!!!

项目背景: 实验环境: 软件介绍 Ansible是一种集成IT系统的配置管理.应用部署.执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建.集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架. ansible软件的一些特

小型自动化运维工具pssh和传输工具rsync

一.简单介绍 1.pssh全称是parallel-ssh,基于Python编写的并发在多台服务器上批量执行命令的工具.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.它相当于ansible的简化版,执行起来速度比ansible快,支持文件并行复制,远程命令执行,杀掉远程主机上的进程,杀手锏是文件并行复制. 2.相关参数 -h –hosts 主机文件列表,内容格式”[[email protected]]host[:port]”

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

pssh项目 项目:http://code.google.com/p/parallel-ssh/ 语法: Usage: pscp.pssh [OPTIONS] local remote 常用选项: --version:查看版本 -h:主机文件列表,内容格式”[[email protected]]host[:port]” -H:主机字符串,内容格式”[[email protected]]host[:port]” -A:手动输入密码模式 -i:每个服务器内部处理信息输出 -l:登录使用的用户名 -p

使用Powershell实现数据库自动化运维

使用Powershell实现数据库自动化运维 目前市场上针对SQLServer的图书,好的原创图书屈指可数,翻译的图书较多,但只限于专门针对SQL Server数据库本身的开发.管理和商业智能. 而针对PowerShell的图书,可以说大多为MSDN里的学习笔记,主要针对Windows操作系统的管理. 微软在大的布局和技术动向来看,力推云平台.而平台化的基础是自动化.高可用.那么细化到最基础的技术着眼点,微软正在大力开发其所有服务器端产品对 PowerShell的支持.针对SQL Server来

企业实战脚本案例3:批量管理自动化运维100台小规模服务器

批量管理自动化运维100台小规模服务器 目录 1.脚本背景介绍 2.脚本技术需求分析 2.1 SSH免登陆认证 2.2 Expect实现key分发 2.2 PSSH家族命令详解 3.脚本功能及实现过程 3.1 脚本运行环境介绍 3.2 脚本功能介绍 3.3 脚本编写思路 3.4 脚本编写案例 一.脚本背景介绍 在企业中经常会用遇到小规模的集群服务器,在日常的管理中经常会遇到重复性的动作,如更新备上百台服务器上的ssh公钥.备份上百台服务器上的/etc/passwd配置文件等等,通常情况下采用专用

自动化运维神器之saltstack (五)salt-ssh的应用场景

satlstack号称自动化运维的利器,那么saltstack能不能实现自身的批量部署呢?如果你也有这样的疑问,那么就更要看这篇文章了.答案当然是肯定的啦!saltstack可以利用salt-ssh来实现自身的批量部署.首先看待salt-ssh,很容易想到它是一个依赖 ssh 来进行远程命令执行的工具,这样做的好处是你不必在客户端安装minion程序,就可以实现远程命令的执行,而且salt-ssh支持salt的绝大部分功能. 既然不安装minion端,那么master怎样识别到客户端并与客户端进

saltstack 自动化运维神器(四)salt-ssh

satlstack号称自动化运维的利器,那么saltstack能不能实现自身的批量部署呢?如果你也有这样的疑问,那么就更要看这篇文章了.答案当然是肯定的啦!saltstack可以利用salt-ssh来实现自身的批量部署.首先看待salt-ssh,很容易想到它是一个依赖 ssh 来进行远程命令执行的工具,这样做的好处是你不必在客户端安装minion程序,就可以实现远程命令的执行,而且salt-ssh支持salt的绝大部分功能. 10.10.10.4      salt-master    os:r

自动化运维工具SaltStack详细部署【转】

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp

自动化运维软件设计实战——互动出版网

这篇是计算机类的优质预售推荐>>>><自动化运维软件设计实战> 编辑推荐 本书适合从事系统运维及运维开发的人员阅读. 内容简介 本书主要讲解采用OSGi技术来设计一款可插拔式的运维软件的方法与思想,为读者提供一种不一样的运维软件设计与自动化运维解决方案.本书分三部分,第一部分讲解开源社区中比较流行的三款集中化运维软件,第二部分与读者一起分享为什么要采用OSGi的技术来设计集中化运维软件,第三部分介绍设计这款运维软件所涉及的技术和一些设计思想. 作译者 吴文豪,运维开发工