python3监控CentOS磁盘空间脚本


Posted in Python onJune 21, 2018

Python脚本监控CentOS磁盘空间,任何一个分区空间使用大于80%即发邮件给到指定邮箱。

monitor.py

#-*- coding: utf-8 -*- 
import socket 
import subprocess 
import smtplib 
from email.mime.text import MIMEText 
 
sender="xxx.xx@xxx.com" 
receiver= ["xxx.xx@xxx.com"] 
smtpHost="10.134.xxx.xxx" 
smtpPort="587" 
 
def get_ip(): 
  hostname = socket.getfqdn(socket.gethostname()) 
  ip = socket.gethostbyname(hostname) 
  return ip 
 
def send_mail(receiver,subject,content): 
  ip = get_ip() 
  msg = MIMEText(content,_subtype='plain',_charset='utf-8') 
  msg['Subject'] = subject 
  msg['From'] = 'CLOUD SERVER ' + ip 
  msg['To'] = ",".join(receiver) 
 
  try: 
    smtp = smtplib.SMTP(smtpHost,smtpPort) 
    #smtp.set_debuglevel(1) 
    smtp.docmd("HELO Server") 
    smtp.ehlo("ismetoad") 
    smtp.starttls() 
    smtp.helo("ismetoad") 
    smtp.sendmail(sender,receiver,msg.as_string()) 
    smtp.close() 
 
  except Exception as error: 
    print(error) 
 
def run_cmd(cmd): 
  process = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE)   
  result_f,error_f = process.stdout,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(): 
  subject = '' 
  result = run_cmd(cmd) 
  content = '[root@vm-vc02-SR910 ~]# ' + cmd + '\n' + result 
  result = result.split('\n') 
  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 = '[WARNING] SERVER FILESYSTEM USE% OVER ' + i + ', PLEASE CHECK!' 
  if subject: 
    send_mail(receiver,subject,content) 
    print('email sended') 
  else: 
    print('Everything is ok, keep on monitor.') 
               
if __name__ == '__main__': 
  cmd = 'df -h' 
  disk_check()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之私有函数和专有方法
Oct 24 Python
Python动态加载模块的3种方法
Nov 22 Python
python结合opencv实现人脸检测与跟踪
Jun 08 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
python实现机器学习之元线性回归
Sep 06 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
Python对列表的操作知识点详解
Aug 20 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
执行Python程序时模块报错问题
Mar 26 Python
Python ellipsis 的用法详解
Nov 20 Python
python实现猜单词小游戏
May 22 #Python
python2.x实现人民币转大写人民币
Jun 20 #Python
python实现猜数字小游戏
Mar 24 #Python
python实现人民币大写转换
Jun 20 #Python
python人民币小写转大写辅助工具
Jun 20 #Python
python简易远程控制单线程版
Jun 20 #Python
python通过Windows下远程控制Linux系统
Jun 20 #Python
You might like
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
PHP new static 和 new self详解
2017/02/19 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
Django 路由控制的实现
2019/07/17 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
房地产出纳岗位职责
2013/12/01 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
幼儿园评语大全
2014/04/17 职场文书
三方协议书
2015/01/27 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
上诉答辩状范文
2015/05/22 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
初中信息技术教学反思
2016/02/16 职场文书
学者《孟子》名人名言
2019/08/09 职场文书