需要了解的pssh(r11笔记第28天)

   昨天的一篇文章,关于ssh命令的几个使用小技巧(r11笔记第27天),也收到了不少朋友的反馈,其中有个朋友提议说还是用pssh吧,我想想也是。

    对于pssh早有耳闻,但是一直没有尝试用过。自己体验了一番,感觉确实不错,对于我们日常碰到的批量操作都可以胜任。当然还有很多可选方式,比如pgm,fabric,puppet,ansible等,只要能实现需求,怎么玩都是套路,而且也急不得,一个学明白了学其他的就会容易很多。

     关于pssh的p是什么含义,我和朋友还讨论过,到底是python还是parallel的意思,其实按照官网的意思是parallel,当然它是用python写的。查看官网目前较新的版本是2.3.1,可以参考如下链接:

https://pypi.python.org/pypi/pssh/2.3.1

下载得到的不是rpm包,而是一个tar.gz的包,解压以后,直接执行如下的命令即可完成安装的过程。

# python setup.py install

其实这个pssh还有很多附加的功能pscp,prsync,pslurp,pnuke等。

比如我们有几台服务器需要做一些相同的检查。

服务器列表我们提供一个文件test.txt

10.12.133.125
10.12.2.102
10.12.2.32

比如想批量查看主机名的情况,那么执行的结果如下:

# pssh -h test.txt  -i “hostname”
[1] 17:41:44 [SUCCESS] 10.12.133.125
newtest.oracle.com
[2] 17:41:44 [SUCCESS] 10.12.2.102
bill_10.12.2.102_sx
[3] 17:41:44 [SUCCESS] 10.12.2.32
snewtest2.oracle.com

如果想先显示结果再显示检测情况,可以使用-P选项。

# pssh -h test.txt  -P “hostname”
10.12.133.125: newtest.oracle.com
[1] 17:42:08 [SUCCESS] 10.12.133.125
10.12.2.102: bill_10.12.2.102_sx
[2] 17:42:08 [SUCCESS] 10.12.2.102
10.12.2.32: snewtest2.oracle.com
[3] 17:42:08 [SUCCESS] 10.12.2.32

当然这只是开始,比如想查看一下服务器的uptime情况,超时时间为10秒,对于那些服务器访问不通的情况,情况就会大大改善。

# pssh -h test.txt -t 10  -i uptime

如果服务器有100台,使用如上的方式就会瞬间导致服务器的进程数暴增,如果成千上万台服务器,后果不堪设想,其实我们想让这个过程更平滑一下,那就是使用-p选项,指定并行进程数,比如指定并行进程数为20个,这样就是一个动态控制的过程。

# pssh -h test.txt -t 10 -p 20 -i uptime

如果服务器不算太多,可以使用传入变量的方式,而不适用IP列表。

#  pssh -H “10.12.133.125 10.12.2.32″ -i uptime
[1] 23:22:35 [SUCCESS] 10.12.133.125
 23:19:59 up 268 days,  6:53,  0 users,  load average: 0.07, 0.10, 0.28
[2] 23:22:35 [SUCCESS] 10.12.2.32
 23:04:38 up 220 days,  8:43,  1 user,  load average: 0.22, 0.24, 0.25

大体的使用情况就是上面这样,基本达到的效果就是一个服务器能够通过ssh操作,那么放大到100台,1000台,从客户端来说操作复杂度没有太大的差别。

    pssh这个工具蛮有意思,在安装的目录下有个AUTHORS的文件,作者是两个。

# less AUTHORS
Andrew McNabb <amcnabb at mcnabbs.org>
Brent Chun <bnc at theether.org>  

而我自己也简单看了下pssh的实现代码,说实话,python还是小白,但是从Java学习的基础来看,有些代码大体还是能基本看懂,代码不是很长,所以我打印出来准备抽空好好看看。

    pssh的核心部分有几个文件,pssh和几个库文件,manage.py,task.py,psshutil.py,还有辅助的cli.py,color.py,askpass_client.py,askpass_server.py

简单总结了下,Andrew写了不少的内容,而且近些年的维护都是他。

# Copyright (c) 2009-2012, Andrew McNabb
manager.py
task.py
askpass_client.py
askpass_server.py

而早期的时候更多的内容是Brent来做,2009年左右交接给了Andrew,所以会看到共同作者。

# Copyright (c) 2009-2012, Andrew McNabb
# Copyright (c) 2003-2008, Brent N. Chun
psshutil.py
color.py
cli.py       可见一个开源的项目能够健康发展至今,还是离不开很多默默奉献的人。

这就印证了一句话:

想要走得快,请独行;要想走得远,请结伴而行

PS:如果您想和业内技术大牛交流的话,请加qq群(527933790)或者关注微信公众 号(AskHarries),谢谢!

转载请注明原文出处:Harries Blog™ » 需要了解的pssh(r11笔记第28天)

赞 (0)

分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址