码迷,mamicode.com
首页 > 其他好文 > 详细

张SSH --- 中国人自己的自动化运维工具

时间:2015-08-12 17:01:31      阅读:8544      评论:0      收藏:0      [点我收藏+]

标签:搜索引擎   管理工具   自动化   运维工具   自动化运维工具   

朋友你在纠结到底是使用 Puppet、Chef、SaltStack、Ansible 众多难以捉摸的管理工具吗?你还在为了部署他们翻阅书籍,查遍百度,搜遍google而烦恼吗?不必再找啦,我们了解你的需要“张SSH”能帮我们解决一切问题。他是新出先的‘集中管理运维工具’是基于Python语言开发,糅合了众多老牌运维工具的优点实现了批量配置、批量程序部署、批量运行命令等功能。


首先简单介绍一下我们正在开发的这个程序比Ansible优越在哪里:

1.在配置方面比Ansible更简单了,配置过程中在网络环境下支持一键部署。

2.功能齐全,Ansible有的功能,“张SSH”他都有。

3.输出显示更个性化!“张SSH”不仅实现了WEB图形化界面,而且配备了超一流的搜索引擎,你再也不必担心因为忘记命令而烦恼了。

4.“张SSH”采用开源代码设计如果你有能力可以做二次开发,当然也可以与我们一起探讨。

5.无需安装任何插件,授权免费使用,而且提供问题解决和远程协助等技术性服务。


一、张SSH介绍

(1)张SSH架构如下:

技术分享

本软件我(张其川 Cheung Kei-Chuen)使用Python语言开发,为了实现批量的自动化运维工作而开发,与Ansible一样属于同种开发语言,当然这个由我自己开发,是我根据工作中的实际使用情况而设计,在使用感知上我认为比Ansible更为人性化,更贴近运维人的使用需求。
该程序不需要任何的插件,不需要安装客户端和服务器端,利用的是SSH协议运行。

(2)常见的工作模式

 1.命令字符模式

技术分享

(2)web图像化界面模式

技术分享


二、下载方式

本程序已经开放源码!如果您对此软件感兴趣,请到GitHub下载,完全免费使用,并且永久免费

(1) 在您的浏览器地址栏输入: https://github.com/zhangqichuan/CheungSSH/tree/CheungSSH

(2) 现在您将看到如下页面

(3) 点击Download ZIP就可以了,然后您可以unzip  CheungSSH.zip 解压即可!

技术分享


三、功能大纲

1. 批量分发命令   2. 批量上传文件   3. 批量下载文件   4. 批量部署项目  5.本地脚本远程运行

更多功能,请参见《CheungSSH发布手册.docx》

功能表:


1

名称

功能解释

本软件

2

批量分发命令

在您的本地输入一条命令,程序将会自动把这些命令发送给远程多个服务器执行。

支持

3

批量上传文件

在您的本地执行获取远程服务器的文件到本地,原理跟SFTP一样,但是这里是多个服务器同时执行SFTP。

支持

4

批量下载文件(正则匹配)

在您的本地执行上传远程服务器的文件到远程服务器,原理跟SFTP一样,但是这里是同时为多个服务器执行SFTP,并且支持正则表达式的匹配,比如,您想下载服务器上Tomcat在5月~8月的日志到本地查看: tomcat/logs2015-0[5-8].*.log。

支持

5

多线程

为多个服务器同时执行,这样能减少执行的时间,加快执行效率,尤其是在服务器较多的情况下。

支持

6

自定义输出格式

为了更人性化的显示执行结果, 您可以自行编写一个脚本对结果内容进行重新格式化输出,只为了方便您的查看。

支持

7

格式化日志入库

程序执行的命令和结果,都将写入日志文件中,加入您在每天早上要执行巡检CPU  MEM  IO  DISK 的信息,比如命令:df -h|grep ‘/‘ 得到结果 96% ,那么这些结果都将会格式化的写入日志中,同事也省去了您整理输出信息的时间。

支持

8

命令结果返回状态判断

每个命令执行是否成功,成功了多少, 用时多少,都会显示。

支持

9

su root权限

假如您的服务器只能以普通账户登录,而您平时又是用普通用户登录后su   - root执行命令,这里也支持。

支持

10

结果统计

执行的命令条数,成功数,用时等。

支持

11

自助区分

每个服务器的返回结果,都以特定格式区分开来,方便查看。

支持

12

交互界面

可以在程序里面进行批量发送命令,就像是Linux的shell终端一样。

支持

13

后台运行    

以命令的方式运行,比如您把命令写入一个脚本中,然后用crond每天早上为您自动为多个服务器巡检 .Auto_SSH_Manager_Stand_V71.0.py  <<EOF \n free -m

支持

14

模块化接口

每个命令功能,都是一样以模块执行,所以跟Ansible是一样的原理,但是我认为比Ansibel更人性化。

支持

15

二次开发

有API接口, 如果您想要针对您的工作进行进一步的开发,那么也是可以的。

支持

16

本地脚本在远程服务器运行(远程服务器没有脚本)

您在本地编写一个脚本,或者是程序,或者是可执行文件,在远程服务器上事先不需要存在该脚本,而您可以直接在远程服务器上运行,犹如在普通的Shell终端下,先上传一个程序文件,然后在远程服务器上执行,而我们这里的区别是,无需您手动上传即可执行。

支持

17

自动化巡检

比如您可以在crontd中编写一条命令, 定时为您的多个服务器进行巡检操作,巡检的结果,将会格式化的写入本地日志。

支持

18

不同文件上传到不同服务器上

比如您部署Tomcat  Weblogic集群的时候,有可能每一个Tomcat节点的配置文件都不同,那么可以采用此模式,进行上传配置文件

开发中

19

部署模式         

比如您时常部署Tomcat程序 Weblogic程序等,部署的服务器需要部署完成一台才能进行下一台的操作。很多企业都是这样。

支持

20

密码方式登录

密码登陆,与Shell一样。

支持

21

密钥方式登录

PublicKey登陆,与Shell一样。

支持

22

cd切换目录

就像在Shell中一样,可以在与远程服务器上cd切换路径。

支持

23

选定执行命令失败的主机

如果您执行一个命令失败了,那么您可以select这些主机,然后针对这些主机运行命令。

支持

24

选定一个或者多个主机

选定一个或者多个主机运行命令。

支持

25

选定主机组

选定一个或者多个主机组运行命令。

支持

26

sudo登陆    

sudo登陆,比如sudo  su - root。

支持


四、安装部署本软件

(建议首先使用第一种,如果失败则选用第二种)


第一种方式(自动安装方式)

[ root ~]# cd  CheungSSH-master
[ root ~]# ./install-CheungSSH.sh  #这里用shell脚本为您自动安装,如果安装失败了,您手动安装,请确保/CheungSSH里面的程序有x执行权限哦!


第二种方式

(手动安装方式,在第一种方式失败后,您可以使用这种方式安装,如果第一种方式成功,那么久不需要使用这个方式安装)
假如,您使用自动的安装方式 ./install-CheungSSH.sh  失败了,那么请您使用如下方法手动安装
第一步:

[ root ~]# yum install -y gcc python-devel


第二步:下载ez_setup.py

http://peak.telecommunity.com/dist/ez_setup.py


第三步:

到官网下载pycrypto模块:

https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz

到官网下载paramiko模块:

https://pypi.python.org/packages/source/p/paramiko/paramiko-1.9.0.tar.gz


第四步 解压并安装:pycrypto、paramiko

[ root ~]# tar xvf  pycrypto-2.6.1.tar.gz && cd pycrypto-2.6.1 && python setup.py install

[ root ~]# tar xvf  paramiko-1.9.0.tar.gz && cd paramiko-1.9.0 && python setup.py install
如果您已经安装成功了,那么下面直接可以运行程序

现在您需要修改一下配置文件,也就是指定程序如何运行,开看下一下配置文件介绍:

[root ~]# ./cheungssh_v115.py  #先执行一下,会生成一些初始化配置文件
CMD>>>>exit                                  #然后退出,就算部署好了,接下来就可以修改配置文件,就能使用啦!!
[root@1 ~]# more /cheung/conf/cheung.conf    #先看看配置文件哦!
[AUTO_SSH]
Useroot=N
Timeout=3                      # 指定登陆服务器的响应超时时间
RunMode=M                      #使用多线程运行程序
#UseKey=n                       # 是否使用密钥登录
#Deployment=n                  # 是否使用部署模式,比如在更新Tomcat,Apache 的时候,需要逐一进行部署,使用该模式后,程序会结果您指定的日志信息进行判断重启是否成功,如果成功,则自动进行下一个服务器的部署。否则会有提示
#ListenFile=/var/log/messages  #使用了部署模式后,您需要制定一个日志文件, 让程序去读取您指定的关键信息
#ListenTime=60                 #使用了部署模式后,程序读取您指定的日志信息时间,默认为60秒钟,如果在指定时间未读取到相关信息,则认为部署失败。


 

#ListenChar=Server startup     #使用了部署模式后, 您指定的字符信息,如果读取到这个信息,那么就认为部署成功, 服务器将自动进行下一个部署,比如tomcat中如果出现这个字符,那么可以认为是启动成功了的,当然要排除启动后的一些404,500错误。因为这里只判断启动是否成功。

配置/cheung/conf/cheung.conf:

技术分享

配置/cheung/conf/hosts:

技术分享


解释:

第一列:主机地址

第二列:主机的端口

第三列:主机的登陆用户名

第四列:主机用户名的密码,如果您担心密码泄露,那么此处可以填写None

第五列:su-root的密码  ,如果您未使用Useroot,此列可以填写None

提示:

1.以上配置必须有固定的格式,否则程序将无法运行

2.如果您在密码列填写的是None,那么在您执行命令的时候程序将会询问您密码。这样可以保护安全信息。

3.由于CheungSSH是批量操作的,所以不支持交互式,比如vi,top,ping等交互命令,如果您懂得如何取消交互也可以的详细的使用手册,请到GitHub上下载。


演示一

执行一个命令uptime看下各个服务器的运行情况:      (请注意,这里执行命令,与您在Linux的终端下执行命令是一模一样!这里就比Ansible的操作更简单!)
[root ~]# ./cheungSSH_Manager_Stand_V90_ISSUE.py #启动程序,如果您下载的版本不同,请ls CheungSSH 查看具体的程序名称.
技术分享

技术分享

另外,您还能看到的是,每次执行了命令, 我的程序都会统计:用时多少 ? 有多少服务器执行成功了?

技术分享


演示二

假如您是系统管理员,每天要收集各个服务器的Disk信息,来看看我这个程序能为您做的:


1.假如,您用这个检查您的根 “/”  分区使用量 :df  -h|awk ‘$NF=="/"{print  $(NF-1)}‘   看看这个命令在我的程序里如何运行:(当然,这只是一个普通的linux系统命令而已,您可以执行是mkdir  /tmp/test  , ps -fel  等等。。Linux系统命令)

技术分享

也许此时您会觉得,这样在屏幕上显示,我没法收集起来啊?那您的担心,我完全为您考虑到了,来看下日志:

格式化日志: tail -f  /cheung/logs/cheungssh.log
原始日志:   tail -f /cheung/logs/cheungssh.source.log #建议您看这个日志

技术分享

看到了吗?我的日志里面,已经为您记录好了每个命令的执行结果,所以,您只需要执行命令,然后就可以在日志里面提取出结果来,这样,完全不用人工监督!


演示三

批量的下载各个服务器的文件到本地来,

比如说,您要下载localhost这个服务器、127.0.0.1 这两个服务器的/var/log/messages日志文件到您的本地服务器来(当然了,我这里是演示,只能给127.0.0.1和localhost做示范哈,因为敏感问题哦!当然您可以理解成为完全不同的服务器)

技术分享


演示四

批量的从多个服务器上同时下载多个文件到本地.

假如有一天,您的游戏服务器有了问题,您的领导让您把N多个服务器上的Tomcat日志从5月1日到5月8日的文件都拿到本地来让研发分析,那么这个时候,我的这个程序就能帮到您的忙了(注意哦, 是每个服务器都同时下载多个文件哦!):

技术分享

看看,多个文件就从多个服务器上下载下来了哦!霸道吧?

演示五

批量上传文件到远程服务器 :

技术分享


演示六

自动化部署Tomcat、Apache、Nginx、Weblogic程序:

(这个程序可是我的王牌设计哦!

先介绍一下场景:您有100台服务器,今晚就需要部署Tomcat程序升级包,部署完了以后,需要重启Tomcat吧?
有个前提,您的领导不允许你因为部署,就全部同时停止多个Tomcat服务器,因为那样对业务会有影响!只允许同时停止一台Tomcat,那么我的这个程序就派上了用场!
首先介绍一下设计思路:一个进程去执行重启Tomcat的命令, 而另一个命令负责去监控重启后的Tomcat日志,如果日志中出现“Startup server” 字样,那么说明Tomcat就启动成功了,这个进程会告诉另外一个进程相关信息,而此时 另外的那个进程就可以对下一个服务器执行重启命令了哦!如此循环!知道重启完毕为止,当然如果重启过程中遇到错误,那么程序会询问您是否需要继续重启其他服务器?

好,我们看下演示效果:

技术分享

看下真正的tomcat日志,发现,是真的启动成功了  

演示七

在您本地的脚本,让他在远程服务器上运行,事先远程服务器上没有这个脚本的哦!
应用场景,比如您要对服务器执行一个脚本内容, 而事先无需让这个脚本在远程服务器上存在,只需要在本地程序上运行,就能让远程服务器上运行了哦!

来看下效果:

1.先看下我们本地脚本的内容:

[root@1 ~]# more b.sh
echo "远端服务器:"
/sbin/ifconfig|awk  -F "( *)|:" ‘ {if ($0~"inet6") next; } {if($0~/127.0.0.1/) next;} $0~/inet/{print $4}‘

2.然后把上面的脚本b.sh 在程序里面执行:

技术分享


演示八

选定主机组:

1. 看下/cheung/conf/hosts配置文件,已经配置了多个主机组:
[hosts1]
127.0.0.1===22===admin===admin123===None
test.com===22===root===zhang===None
[hosts2]
localhost===22===root===zhang===None
2 进入内部命令模式,使用select选定主机组,或者是主机

技术分享

技术分享

全部的功能已经介绍完了,看完了我的介绍,您觉得最大的感触是什么呢 ?有没有觉得我的配置很多?很繁琐?在使用的过程中,有没有像Ansible或者是Puppet一样,配置一大把参数, 一大把文件?没有吧!!

技术分享

更多操作方法

请到GitHub下载操作手册《CheungSSH发布手册.docx)查看了解.

我诚意推荐您使用本软件进行自动化运维或者部署,因为Ansible比puppet更好,而我的AutoSSH比Ansible更优秀!本软件由:张其川 Cheung Kei-Chuen 全程自主开发,属于中国人的又一个运维利器!


本文出自 “linux” 博客,转载请与作者联系!

张SSH --- 中国人自己的自动化运维工具

标签:搜索引擎   管理工具   自动化   运维工具   自动化运维工具   

原文地址:http://10624999.blog.51cto.com/10614999/1684022

(0)
(6)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!