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