python中使用linux命令

python自动化运维,当然指的是用python语言调用linux命令的一个过程,本文先以最为简单的方式,给大家展示一下基本的过程

场景:执行python命令,使tomcat服务一直在线

首先,我们需要知道的是,监测tomcat在线的方式有很多,我们以8080端口在线为准,监视tomcat的服务情况

[root@localhost proc]# ss -ntl | grep 8080
LISTEN     0      100         :::8080                    :::* 

访问网址存在

python中使用linux命令_第1张图片

首先,我们需要知道,tomcat挂掉的情况之一是8080端口不在

在此模拟tomcat挂掉的情况

[root@localhost bin]# ./shutdown.sh 
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.35
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.35
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.35/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/apache-tomcat-8.5.35/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.35/bin/tomcat-juli.jar
[root@localhost bin]# ss -ntl | grep 8080

[root@localhost bin]#

在tomcat挂掉之后,执行“ss -ntl | grep 8080”没有任何端口显示(模拟线上服务挂掉)

此时,我们需要重启tomcat服务

[root@localhost bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.35
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.35
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.35/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/apache-tomcat-8.5.35/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.35/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# ss -ntl | grep 8080
LISTEN     0      100         :::8080                    :::* 

执行后,tomcat服务端口在线,tomcat服务重启成功


上面过程就是我们手动维护的tomcat服务器的过程,这个过程虽然简单,但是,基本就是线上环境的会面临的问题,唯一的问题是线上环境可能存在着更多的不确定因素,本文不展开叙述。

那么上述服务从挂掉到启动,实则是一个对8080端口监听的过程分析。

现在我们以python来解决问题。(shell脚本也可以,不过不是本文重点)

需要使用到的命令

[root@localhost bin]# ss -ntl | grep 8080
[root@localhost bin]# ./startup.sh 

逻辑:

1:检测8080端口,存在,无任何操作

2:检测8080端口,不存在,执行start.sh命令

python中调用命令的方法是 os.system(‘命令’)

代码如下:

import os    #在python中使用shell命令
result = os.system('ss -ntl | grep 8080')#判断命令是否执行成功,正确返回0
if(result==0):
    print('服务存在!')
else:
    print('服务不存在')
    os.system('/usr/local/apache-tomcat-8.5.35/bin/startup.sh')#在脚本和程序中使用绝对路径能减少很多新手错误
[root@localhost python]# ll
总用量 4
-rw-r--r-- 1 root root 269 5月  13 14:49 tomcat服务监控.py
[root@localhost python]# chmod +x tomcat服务监控.py 
[root@localhost python]# ll
总用量 4
-rwxr-xr-x 1 root root 269 5月  13 14:49 tomcat服务监控.py
[root@localhost python]# cat tomcat服务监控.py 
import os
result = os.system('ss -ntl | grep 8080')
if(result==0):
    print('服务存在!')
else:
    print('服务不存在')
    os.system('/usr/local/apache-tomcat-8.5.35/bin/startup.sh')#在脚本和程序中使用绝对路径能减少很多新手错误

配置相应的权限


到上面为止,基本上一个python代码过程的分析已经完成

开始测试python代码

情况一:服务在线

[root@localhost python]# ss -ntl | grep 8080
LISTEN     0      100         :::8080                    :::*                  
[root@localhost python]# python3 tomcat服务监控.py 
LISTEN     0      100         :::8080                    :::*                  
服务存在!

情况二:服务不存在

[root@localhost python]# ss -ntl | grep 8080
[root@localhost python]# python3 tomcat服务监控.py 
服务不存在
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.35
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.35
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.35/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/apache-tomcat-8.5.35/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.35/bin/tomcat-juli.jar
Tomcat started.
[root@localhost python]# ss -ntl | grep 8080
LISTEN     0      100         :::8080                    :::* 

python已经成功的重启服务


到此,我们只需要调用python代码就可以重启服务,接下来就是实现一个基本的运维过程(毕竟人为监控显然不符合急速发展的it行业!emmmm....也许,或许....吧,哈哈哈哈!)

将上述python过程加入crontab中实现,每1min调用

[root@localhost ~]# crontab -l
*/1 * * * * /usr/bin/python3 /root/python/tomcat服务监控.py

现在,你已经成功实现了每1min就检查一次tomcat服务过程(也就是说,服务也就挂掉1min就会重启,当然,真正的线上环境情况复杂的多,本文大家可以先了解一下线上生产环境过程)

完!

你可能感兴趣的:(Python,python自动化运维篇)