前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >需要了解的pssh(r11笔记第28天)

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

作者头像
jeanron100
发布2018-03-21 11:12:47
9020
发布2018-03-21 11:12:47
举报

昨天的一篇文章,关于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 可见一个开源的项目能够健康发展至今,还是离不开很多默默奉献的人。

这就印证了一句话:

想要走得快,就一个人走;要想走得远,就一起走

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 想要走得快,就一个人走;要想走得远,就一起走
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档