通过python获取磁盘空间。如果对账单没有取值

2024-03-29 07:39:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用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.')

Tags: textimportcomifserverishtmlmsg