今天为了写一个对linux磁盘空间的监控脚本用到了subprocess这个包,在此记录下来。
process = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE)各个参数:cmd 为shell指令 shell参数的影响暂时没用到 stdout为结果输出方式 stderr为错误输出方式 这里选择方式为管道
import subprocess import cx_Oracle import time def run_cmd(cmd): process = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE) result_f = process.stdout error_f = process.stderr errors = error_f.read() if errors: pass result = result_f.read().decode() if result_f: result_f.close() if error_f: error_f.close() return result def disk_check(sql): result = run_cmd(cmd) result = result.split('\n') conn = cx_Oracle.connect('你的数据库') for line in result: if 'G ' in line or 'M ' in line: line = line.split() for i in line: if '%' in i and int(i.strip('%')) > 80: subject = ' SERVER FILESYSTEM USE% OVER ' + i + ', PLEASE CHECK!' sql=sql.format(smcontent_value=subject) cursor = conn.cursor() cursor.execute(sql) conn.commit() cursor.close() conn.close()具体思路为先用subprocess方法获得shell指令df -h 的结果,然后对结果的每一行处理,用spilt方法切分 去掉含%元素中的%,剩下的数字超过80就向数据库插入一条信息。