#!/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中而不是存储在字符串中......
答案 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)
在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解决方案。