python3监控CentOS磁盘空间脚本

时间:2021-12-24 03:57:06

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

monitor.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#-*- 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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/wawa8899/article/details/54907980