我正在尝试用python创建一个脚本,它得到已用磁盘空间的百分比值。 我通过在子进程中运行df-h命令,然后将值存储在diskspace var中来实现这一点
后来当我在IF语句中使用它时,它似乎没有正确地获取值。你知道吗
磁盘空间百分比为76。我将IF语句设置为触发电子邮件,并在百分比高于90时打印消息。但即使值较低,它仍会触发电子邮件并在IF中打印消息。你知道吗
我想这是因为python中的输出不仅仅是一个76的整数值,而是('76\n',None),所以它认为这是一个字符串值?你知道吗
有人有什么建议吗?你知道吗
#!/usr/bin/python
import subprocess
import smtplib
import socket
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
hostname = socket.gethostname()
me = 'user@gmail.com'
you = ['a@gmail.com', 'b@gmail.com', 'c@gmail.com', 'd@gmail.com']
getdiskspace = "df -k / | awk 'NR > 1 {sub( \"%\", \"\", $5); print $5 }'"
proc = subprocess.Popen(getdiskspace, stdout=subprocess.PIPE, shell=True)
diskspace = proc.communicate()
msg = MIMEMultipart('alternative')
msg['Subject'] = 'Disk space getting full ' + hostname
msg['From'] = me
msg['To'] = ", ".join(you)
msg['X-Priority'] = '1'
msg['X-MSMail-Priority'] = 'High'
text = "Disk space getting full on the " + hostname
html = """\
<html>
<head></head>
<body>
<p>
Diskspace is getting full on one of the servers, go check it out.
</p>
</body>
</html>
"""
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)
server = smtplib.SMTP("smtp.gmail.com", "587")
server.ehlo()
server.starttls()
server.login('user@gmail.com', 'MYPASS')
if (diskspace > 90):
print('This is not ok, load is ' + repr(diskspace))
server.sendmail(me, you, msg.as_string())
server.quit()
else:
print('this is ok.')
目前没有回答
相关问题 更多 >
编程相关推荐