听人说mussh和pssh不错,就看了下,顺便把mussh和pssh的介绍和使用方法给大家介绍下。

先说下mussh,mussh 是shell开发的一个小工具,刚学习运维和shell的朋友可以拿来锻炼下,做个工具的二次开发。

[root@devops-ruifengyun ~ ]$ apt-get install mussh

wKioL1O8ngyjili3AAPxH1oSDtI506.jpg

mussh的帮助,会看到他的帮助相当的简单。

[root@devops-ruifengyun ~ ]$ 

http://rfyiamcool.blog.51cto.com/

[root@devops-ruifengyun ~ ]$ cat mu.list 

10.1.25.46

10.1.25.47

10.1.25.48

10.1.25.49

[root@devops-ruifengyun ~ ]$ 

[root@devops-ruifengyun ~ ]$ 

[root@devops-ruifengyun ~ ]$ mussh -H ./mu.list -c ‘dir’

10.154.252.46: a.py     install.log keepalived-1.2.12

10.154.252.46: epel-release-6-8.noarch.rpm  install.log.syslog  keepalived-1.2.12.tar.gz

10.154.252.47: install.log  install.log.syslog  keepalived-1.2.12  keepalived-1.2.12.tar.gz

10.154.252.48: install.log  install.log.syslog  rs.sh

10.154.252.49: install.log  install.log.syslog  rs.sh

[root@devops-ruifengyun ~ ]$ 

[root@devops-ruifengyun ~ ]$ 

wKiom1O8n8iR-Sr8AAJehoAgJNU949.jpg

测试他有没有并发的特性。

[root@devops-ruifengyun ~ ]$ time mussh -H ./mu.list -c ‘sleep 3;dir’

10.154.252.46: a.py         install.log keepalived-1.2.12

10.154.252.46: epel-release-6-8.noarch.rpm  install.log.syslog  keepalived-1.2.12.tar.gz

10.154.252.47: install.log  install.log.syslog  keepalived-1.2.12  keepalived-1.2.12.tar.gz

10.154.252.48: install.log  install.log.syslog  rs.sh

10.154.252.49: install.log  install.log.syslog  rs.sh

mussh -H ./mu.list -c ‘sleep 3;dir’  0.04s user 0.16s system 1% cpu 13.206 total

[root@devops-ruifengyun ~ ]$ 

果然没有并发执行。。。这也太不咋低了。

mussh支持发送脚本并执行的,在mussh的cli命令行  直接 -C 跟着脚本就可以了。

[root@devops-ruifengyun ~ ]$ time mussh -H ./mu.list -C c.sh

10.154.252.46: a.py         install.log keepalived-1.2.12

10.154.252.46: epel-release-6-8.noarch.rpm  install.log.syslog  keepalived-1.2.12.tar.gz

10.154.252.47: install.log  install.log.syslog  keepalived-1.2.12  keepalived-1.2.12.tar.gz

10.154.252.48: install.log  install.log.syslog  rs.sh

10.154.252.49: install.log  install.log.syslog  rs.sh

mussh -H ./mu.list -C c.sh  0.10s user 0.17s system 42% cpu 0.629 total

[root@devops-ruifengyun ~ ]$ 

[root@devops-ruifengyun ~ ]$ 

[root@devops-ruifengyun ~ ]$ 

咱们再来测试下pssh这个比mussh要高端的东西,pssh是python开发的一个用来批量管理linux主机的工具。


pssh相关参数

pssh在多个主机上并行地运行命令

-h 执行命令的远程主机列表,文件内容格式[user@]host[:port]

如 test@172.16.10.10:229

-H 执行命令主机,主机格式 user@ip:port

-l 远程机器的用户名

-p 一次最大允许多少连接

-P 执行时输出执行信息

-o 输出内容重定向到一个文件

-e 执行错误重定向到一个文件

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

-A 提示输入密码并且把密码传递给ssh(如果私钥也有密码也用这个参数)

-O 设置ssh一些选项

-x 设置ssh额外的一些参数,可以多个,不同参数间空格分开

-X 同-x,但是只能设置一个参数

-i 显示标准输出和标准错误在每台host执行完毕后

附加工具

pscp 传输文件到多个hosts,类似scp

pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt

pslurp 从多台远程机器拷贝文件到本地

pnuke 并行在远程主机杀进程

pnuke -h hosts.txt -l irb2 java

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

prsync -r -h hosts.txt -l irb2 foo /home/irb2/foo

[root@vm-10-154-252-82 ~]$                                                            

[root@vm-10-154-252-82 ~]$cat list                                                    

10.154.252.46                                                                         

10.154.252.47                                                                         

10.154.252.48                                                                         

10.154.252.49                                                                         

[root@vm-10-154-252-82 ~]$                                                            

[root@vm-10-154-252-82 ~]$                                                            

[root@vm-10-154-252-82 ~]$pssh -i -h list ‘uptime’                                    

[1] 10:10:14 [SUCCESS] 10.154.252.46                                                  

 10:10:14 up 62 days, 19:26,  2 users,  load average: 0.08, 0.02, 0.03                

[2] 10:10:14 [SUCCESS] 10.154.252.49                                                  

 10:10:14 up 62 days, 19:30,  1 user,  load average: 0.00, 0.00, 0.00                 

[3] 10:10:14 [SUCCESS] 10.154.252.48                                                  

 10:10:14 up 62 days, 20:49,  1 user,  load average: 0.13, 0.03, 0.01                 

[4] 10:10:14 [SUCCESS] 10.154.252.47                                                  

 10:10:14 up 62 days, 19:59,  0 users,  load average: 0.28, 0.08, 0.02                

[root@vm-10-154-252-82 ~]$                                                            

[root@vm-10-154-252-82 ~]$                                                            

pssh 是python行的,容易实现程序调度的并发。 

[root@vm-10-154-252-82 ~]$time pssh -i -h list ‘sleep 3;uptime’

 wKioL1O8qOODFWxAAAOCxI_a0x8289.jpg                                                   

pssh的源码是在 /usr/lib/python2.6/site-packages/psshlib

我们可以看看他的主调度的模块,managepy

里面含有这四个模块。 select用来做调度,signal用来做超时的判断,threading 用来做多任务的并发执行。  pssh 远程的ssh执行,没有调用paramiko或者是fabric这样现成的ssh库,而是直接用subprocess调用系统的ssh进程


解析主机host文件的逻辑


再来看看执行命令的逻辑.

其实这两个工具都不太满意,还是推荐用ansible和saltstack这样的扩展性比较强的工具。

当然还是要看你的环境,怎么爽怎么来 !!!




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

发表评论