AutoSSH使用手册
一、介绍:
本软件我(张其川Cheung Kei-Chuen)使用Python语言开发,为了实现批量的自动化运维工作而开发,与Ansible一样属于同种开发语言,当然这个由我自己开发,是我根据工作中的实际使用情况而设计,在使用感知上我认为比Ansible更为人性化,更贴近运维人的使用需求。目前已经更新版本到Auto_SSH_Manager_Stand_V87.0版
该程序不需要任何的插件,不需要安装客户端和服务器端,利用的是SSH协议运行。只需要随便用一台linux 系统安装以下软件即可。
第一步:下载pycrypto模块:wget /packages/source/p/pycrypto/pycrypto-2.6.
第二步:下载paramiko模块:wget /packages/source/p/paramiko/paramiko-1.9.
第三步:下载我的自动化运维工具 wget pan.baidu/s/1mgqZihM
第四步:安装开发环境#yum install -y gcc
第五步:安装python环境  #yum install -y python-devel
#tar xvf pycrypto-2.6. #解压
#cd pycrypto-2.6.1
#python setup.py install  #安装
#tar xvf paramiko-1.9. #解压
#cd paramiko-1.9.0
#python setup.py install  #安装
[root@yunwei opt]# tar zxvf
[root@yunwei opt]#cd CheungSSH
[root@yunwei CheungSSH]# ./Auto_SSH_Manager_Stand_V85.py  #先执行一下,会生成一些初始化配置文件
解决办法:
[root@yunwei ~]# vim /usr/lib/python2.6/site-packages/Crypto/Util/number.py
CMD>>>>exit  #然后退出,就算部署好了,接下来就可以修改配置文件,就能使用啦!!
初始化配置文件路劲:
[root@yunwei ~]# more /cheung/f  #先看看配置文件哦!
[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,我认为那是繁琐的。
UseKey=n #是否使用密钥登录
Deployment=n  #是否使用部署模式,比如在更新Tomcat,Apache 的时候,需要逐一进行部署,使用该模式后,程序会结果您指定的日志信息进行判断重启是否成功,如果成功,则自动进行下一个服务的部署。否则会有提示。
Port=22 #远程服务器的端口
#以上是基本的配置,以下是高级配置哦!如果您的众多服务器中,有些服务器的用户名不尽相同,那么您可以在此处指定额外的用户名,把上面的Servers=、Username=、Password=、Port= 配置注释掉,把下面的配置取消注释。
#IP_User=abc #比如10.98.10.10_User=cmz;
#IP_Password=1234567 #比如10.98.10.10_ Password=1234567
#IP_Port=222 #如果每台服务器的SSH端口不一样,就可以这样指定
#Passwordroot=100200  #如果使用了su – root ,此处需要指定root的password
#Timeout=10 # 指定登陆服务器的响应超时时间,单位分钟
#RunMode=M  #使用多线程运行程序
#ListenFile=/var/log/messages #使用了部署模式后,您需要制定一个日志文件,让程序去读取您指定的信息
#ListenTime=60 #使用了部署模式后,程序读取您指定的日志信息时间,默认为60秒钟,如果在指定时间未读取到相关
信息,则认为部署失败。
#ListenChar=Server startup #使用了部署模式后,您指定的字符信息,如果读取到这个信息,那么久认
为部署成功呢,服务器将自动进行下一个部署,比如tomcat中如果出现这个字符,那么可以认为是启动成功了
的,当然要排除启动后的一些404,500错误。因为这里只判断启动是否成功。
演示一、执行一个命令uptime看下各个服务器的运行情况:
[root ~]#cd /opt/CheungSSH
[root@yunwei CheungSSH]# ./Auto_SSH_Manager_Stand_V85.py  #这样就能执行程序了
另外,您还能看到的是,每次执行了命令,程序都会统计:用时多少?有多少服务器执行成功了,有多少服务器执行失败了?
有个bug问题,执行了Auto_SSH_Manager_Stand_V88_ISSUE.py脚本后,键盘的回格键不能用,按回格键显示?号。
下图显示:
解决bug问题:注释掉第20行就可以。(注意:每个人安装的系统不一样,有些人的系统注释掉后,回格键用不了,有些人的系统不注释掉才可以用)
# vim /opt/CheungSSH/Auto_SSH_Manager_Stand_V88_ISSUE.py
演示二、假如您是系统管理员,每天要收集各个服务器的Disk信息,来看看我这个程序能为您做的:
1 假如:您用这个检查您的根“/”分区使用量:df -h|awk '$NF=="/"{print $(NF-1)}'看看这个命令在我的程序里如何运
行:
也许此时您会觉得,这样在屏幕上显示,我没法收集起来啊?那您的担心,我完全为您考虑到了,来看下日志:
#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}'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。