带有磁盘空间的电子邮件警报的Python脚本

时间:2016-02-23 14:05:45

标签: python linux automation operating-system

#!/usr/bin/python
import os
import smtplib

content = str(os.system('df -h /'))
print (content)
mail=smtplib.SMTP('smtp.gmail.com:587')
mail.ehlo()
mail.starttls()
mail.login('*****@gmail.com','****')
mail.sendmail('*******@gmail.com','**********@gmail.com',content)
mail.close()

我的问题是,当我收到邮件时,它只显示0。 它不打印df -h /的输出。 任何人都可以帮助我。 我认为它将输出存储在var中而不是存储在字符串中......

2 个答案:

答案 0 :(得分:0)

请更改代码的第一部分,然后重试:

#!/usr/bin/python
import os
import smtplib
import subprocess

out = subprocess.Popen(['df', '-h'], stdout=subprocess.PIPE).communicate()[0]
print(out)

答案 1 :(得分:0)

根据documentation

  

在Unix上,返回值是以wait()指定的格式编码的进程的退出状态。请注意,POSIX没有指定C系统()函数的返回值的含义,因此Python函数的返回值是依赖于系统的。

您应该使用的一个命令是popen

#!/usr/bin/python
import os
import smtplib

with os.popen('df -h /') as cmd:
    content = cmd.read()
print (content)
mail=smtplib.SMTP('smtp.gmail.com:587')
mail.ehlo()
mail.starttls()
mail.login('*****@gmail.com','****')
mail.sendmail('*******@gmail.com','**********@gmail.com',content)
mail.close()

另一种方法可能是user3001445解决方案。

相关问题