您的位置:首页 > 运维架构 > Linux

CheungSSH比Ansible更优秀的Linux SSH批量管理服务器 执行命令上传下载自动化运维工具

2015-06-03 13:00 791 查看
本程序已经开放源码!如果您对此软件感兴趣,请到GitHub下载免费使用
下载方式(您只需要选择一种合适您的下载方式即可!):
      第一种方式  如果您的Linux有git命令,那么请使用以下这种方式下载:
           [root@localhost ]#  git clone  https://github.com/zhangqichuan/CheungSSH.git
       下载成功后,会在您的当前目录有一个CheungSSH的目录,里面就是本软件的所有程序了。

或者:
      第二种方式  如果您的Linux上没有git命令,那么请使用以下方式进行下载:
           (1) 在您的浏览器地址栏输入: https://github.com/zhangqichuan/CheungSSH
          (2) 现在您将看到如下页面:
             


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

开发者:张其川 Cheung Kei-Chuen

#QQ  :      741345015

#    E m a i l:KC-C@qq.com

如果您觉得这个软件不错, 也可以与我合作研究!

在这里先简单介绍一下我的这个程序与Ansible的优势:

比Ansible的使用更简单,尤其是配置方面!而Ansible有的功能, 我的这个程序一样有,和Ansible一样是python开发, 所以跟Ansible的模式一样, 但是CheungSSH 操作更简单!配置更轻量!输出显示更人性化!而且,可以专门为您做二次开发,对企业的自动化需求量身定做!

您可以大致的看下功能表,即可了解本软件的功能

功能表:

1名称
功能解释本软件AutoSSH是否支持Ansible是否支持
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命令结果返回状态判断
每个命令执行是否成功,成功了多少, 用时多少,都会显示
支持
支持
9su 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一样
支持
支持
AutoSSH使用手册

一、介绍:

本软件我(张其川 Cheung Kei-Chuen)使用Python语言开发,为了实现批量的自动化运维工作而开发,与Ansible一样属于同种开发语言,当然这个由我自己开发,是我根据工作中的实际使用情况而设计,在使用感知上我认为比Ansible更为人性化,更贴近运维人的使用需求。目前已经更新版本到
 Auto_SSH_Manager_Stand_V87.0 版

该程序不需要任何的插件,不需要安装客户端和服务器端,利用的是SSH协议运行。

安装部署:
   第一步: [ root ~]# yum install -y gcc
   第二步:[ root ~]#  yum install -y python-devel
   第三步 到官网下载pycrypto模块: wget --no-check-certificate https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz    第四步 解压并安装: [ root ~]#    tar xvf  pycrypto-2.6.1.tar.gz 
                                [ root ~]#   cd pycrypto-2.6.1
                                [ root ~]#   python setup.py install

  第五步 到官网下载paramiko模块:[ root ~]#  wget   --no-check-certificate  https://pypi.python.org/packages/source/p/paramiko/paramiko-1.9.0.tar.gz
   第六步 解压并安装 : [ root ~]#   tar xvf   paramiko-1.9.0.tar.gz 
                                 [ root ~]#  cd paramiko-1.9.0
                                  [ root ~]#  python setup.py install

现在您需要修改一下配置文件,也就是指定程序如何运行,开看下一下配置文件介绍:
 [root ~]# ./Auto_SSH_Manager_Stand_V85.py  #先执行一下,会生成一些初始化配置文件
CMD>>>>exit    #然后退出,就算部署好了,接下来就可以修改配置文件,就能使用啦!!
[root@1 ~]# more /cheung/conf/cheung.conf   #先看看配置文件哦!
[AUTO_SSH]
Servers=localhost,127.0.0.1   #这里是远程服务器的IP,也就是被管理的服务器
Username=root      #服务器对应的账户名,也就是远程服务器上的账户名
Password=zaq1ZAQ!   #服务器对应的账户password,也就是远程服务器上的账户password
Useroot=n            #是否使用  su – root    ,我设计的是,既可以su – root,也可以  sudo  ,就是没有设计成Ansible 的                
               sudo 还要加 su ,我认为那是繁琐的。
#如果您是刚刚使用我的程序,您只需要配置以上就行了,以上是基本的配置, 以下是高级配置哦!
#IP_User=abc             #如果您的众多服务器中,有些服务器的用户名不尽相同,那么您可以在此处指定额外的用户名,比                               如www.baidu.com_User=administrator
#IP_Password=1234567    #同上理
#IP_Port=222                 #同上理
#Passwordroot=abcdef     #如果使用了su – root ,此处需要指定root的password
#Timeout=3                  # 指定登陆服务器的响应超时时间
#RunMode=M               #使用多线程运行程序
#UseKey=n                  # 是否使用密钥登录

#Deployment=n            #
是否使用部署模式,比如在更新Tomcat,Apache 的时候,需要逐一进行部署,使用该模式后,                                        程序会结果您指定的日志信息进行判断重启是否成功,如果成功,则自动进行下一个服务器的部                                        署。否则会有提示
#ListenFile=/var/log/messages          #使用了部署模式后,您需要制定一个日志文件, 让程序去读取您指定的关键信息
#ListenTime=60                         
  #使用了部署模式后,程序读取您指定的日志信息时间,默认为60秒钟,如果在指定时间未读取到相关信息,则认为部署失败。

 

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

演示一、执行一个命令uptime看下各个服务器的运行情况:  (请注意,这里执行命令,与您在Linux的终端下执行命令是一模一样的哦!这里就比Ansible的操作更简单!)
[root ~]# ./Auto_SSH_Manager_Stand_V85.py              #这样就能执行程序了



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



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

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

    


也许此时您会觉得,这样在屏幕上显示,我没法收集起来啊?那您的担心,我完全为您考虑到了,来看下日志:tail  -f /cheung/logs/auto_ssh.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 在程序里面执行:
  


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

如果您有针对您自己的开发需求,请你联系我:QQ 741345015

我诚意推荐您使用本软件进行自动化运维或者部署,因为Ansible比puppet更好,而我的AutoSSH比Ansible更优秀!!

本软件由:张其川 Cheung Kei-Chuen 全程自主开发,属于中国人的又一个运维利器!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息