python中使用linux命令
python自动化运维,当然指的是用python语言调用linux命令的一个过程,本文先以最为简单的方式,给大家展示一下基本的过程
场景:执行python命令,使tomcat服务一直在线
首先,我们需要知道的是,监测tomcat在线的方式有很多,我们以8080端口在线为准,监视tomcat的服务情况
[root@localhost proc]# ss -ntl | grep 8080
LISTEN 0 100 :::8080 :::*
访问网址存在
首先,我们需要知道,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中使用linux命令相关推荐
- python中执行linux命令(调用linux命令)_Python调用Linux bash命令
import subprocess as sup # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run ...
- python中执行linux命令(调用linux命令)_常见Python中调用Linux命令
有时候我们需要从Python中执行Linux命令,下面就介绍几种方法? 1. os 模块: 1.1 os.system 函数: system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果. ...
- 在python中使用linux命令写一个监控脚本
编写python监控脚本,监控/和/boot分区的使用率,/ 大于60%就告警,在屏幕上输出内容,具体自己定义 /boot分区大于50%就告警 脚本名monitor_partition.py 将磁盘的 ...
- linux python脚本返回,在C/python中执行linux命令并得到返回值以及输出
一般来说,用shell的方便之处在于,能够直接调用linux系统命令,方便的得到结果. 但是shell scprit的约束重重(这里不再讲了).下面说一下在C和python中如何调用linux命令.得 ...
- Python中调用Linux命令并获取返回值
方法一.使用os模块的system方法: os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256/512表示未找到,该方法适用于sh ...
- Python中调用Linux命令之os.system、os.popen
一.简介 os.system方法是os模块最基础的方法,其它的方法一般在该方法基础上封装完成. 二.os.system原理 system函数可以将字符串转化成命令在服务器上运行: 其原理是每一条sys ...
- python中调用linux命令报错cat: -: Bad file descriptor
在python脚本中国呢调用linux命令,nohup提交报错 cat: -: Bad file descriptor 但是,结果能正常输出, 没找到原因---
- python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?
原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...
- python使用教程cmd啥意思-对python中执行DOS命令的3种方法总结
1. 使用os.system("cmd") 特点是执行的时候程序会打出cmd在Linux上执行的信息. import os os.system("ls") 2. ...
最新文章
- 负载均衡续:万亿流量场景下的负载均衡实践
- matlab ezplot hold,matlab中的ezplot函数
- SAP LSMW 导入Open PO时价格不对问题之对策
- python引入自己写的文件_python引入自己写的Py文件
- 四川大学计算机科学与技术专业分数线,2015年四川大学计算机科学与技术硕士考研复试分数线是290分...
- java 图片旋转 翻转 镜像处理_Java OpenCV实现图像镜像翻转效果
- 基于JAVA+Spring+MYSQL的家教管理系统
- python保留7天备份文件
- 评分卡模型开发(七)--基于逻辑回归的标准评分卡实现
- Android性能测试工具Emmagee的基本使用
- 上班族时间自由,做什么副业合适?最好是在手机或电脑上的副业?
- 数据中心安全域的设计和划分
- html 给div设置边框颜色代码,div边框颜色设置
- qq邮箱mx服务器,QQ域名邮箱管理系统MX记录是什么?怎么添加设置?
- S3C22440 JTAG连接不上
- 在MTK7628平台编译Silicon的zigbee Host程序
- 明源售楼系统技术解析 销售控制(更名查询与变更查询)
- 以运力平台的方式切入自动驾驶会是一条捷径吗?
- java对象数组练习,定义数组存储三台汽车对象。汽车的属性有:品牌,价格,颜色。创建三个汽车对象,数据通过键盘输入而来,并把数据存入数组中,打印出每台汽车的信息。
- p720自带的磁带机备份aix系统