博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
需要了解的pssh(r11笔记第28天)
阅读量:6432 次
发布时间:2019-06-23

本文共 2313 字,大约阅读时间需要 7 分钟。

   昨天的一篇文章,,也收到了不少朋友的反馈,其中有个朋友提议说还是用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       可见一个开源的项目能够健康发展至今,还是离不开很多默默奉献的人。

这就印证了一句话:

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

转载地址:http://vtaga.baihongyu.com/

你可能感兴趣的文章
CSS颜色代码大全
查看>>
LINQ之路10:LINQ to SQL 和 Entity Framework(下)
查看>>
circle area
查看>>
怎么改变按钮的图标
查看>>
当输入流和输出流同时作用一个文件
查看>>
MySQL关于表碎片整理OPTIMIZE TABLE操作
查看>>
FortiGate 0458版本bug
查看>>
Java --- 多线程 面试题
查看>>
OA项目如何成功实施!
查看>>
FindMaxConsecutive.java
查看>>
面试官问:ZooKeeper 一致性协议 ZAB 原理
查看>>
DNS实现域名正解与反解
查看>>
Linux学习-标准输入输出
查看>>
CentOS 7 配置IP
查看>>
文本处理工具grep及正则表达式
查看>>
Intel VT-x处于禁用状态
查看>>
用什么软件可以修改PDF文件,软件的操作方法
查看>>
如何精简企业主数据“裹脚布”
查看>>
& 号和管道符号(|)在不同场景下的使用方法
查看>>
curl 浏览器模拟请求实战
查看>>