我试图编写一个程序来监控磁盘使用情况,并在超过阈值时发送电子邮件。这就是我到目前为止所做的:
#!/usr/bin/python
import os,psutil,smtplib
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
THRESHOLD = 90
partitions = psutil.disk_partitions(all=True)
message = 'WARNING: DISK OVER ' + str(THRESHOLD) + '% FULL'
#for loop to iterate through disks and monitor usage
for p in partitions:
diskuse = (psutil.disk_usage(p.mountpoint).percent)
if psutil.disk_usage(p.mountpoint).percent >= THRESHOLD:
msg = MIMEText(message)
msg["From"] = "****@***.com"
msg["To"] = "****@***.com"
msg["Subject"] = "DISK(S) OVER THRESHOLD"
P = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE,universal_newlines=True)
P.communicate(msg.as_string())
当我尝试运行该程序时,将发送电子邮件,但不是发送文本电子邮件,而是收到名为ATT00001的文件。我已尝试在没有diskuse
的情况下运行该程序,它按照我的预期方式工作,但我无法弄清楚为什么它不允许我同时发送message
和diskuse
答案 0 :(得分:0)
您尝试发送的电子邮件可能包含特殊字符。当它包含特殊字符(例如\r
)时,它会将其更改为附件。
他们声称LANG="en_US.UTF8" ; export LANG
可以解决您的问题。