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 11 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
Python微信公众号开发平台
Jan 25 Python
scrapy爬虫完整实例
Jan 25 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
python 创建一维的0向量实例
Dec 02 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 Python
详解在OpenCV中如何使用图像像素
Mar 03 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
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
js 目录列举函数
2008/11/06 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
JS+DIV实现拖动效果
2020/02/11 Javascript
python 自动提交和抓取网页
2009/07/13 Python
跟老齐学Python之有点简约的元组
2014/09/24 Python
Python字符串替换实例分析
2015/05/11 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
python实现简单名片管理系统
2018/11/30 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
Python如何存储数据到json文件
2020/03/09 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
先进个人获奖感言
2014/01/24 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
认真学习保证书
2015/02/26 职场文书
继续教育个人总结
2015/03/03 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL