我有一個線程化的python腳本,它在局域網上ping了20個節點,並打印出每個節點的狀態:節點處於活動狀態,節點處於關閉狀態等。 我希望將這個輸出發送到我的電子郵件帳戶,因爲我打算讓這個腳本每週運行一次,而且如果我身體上遠離LAN,我不必擔心,我可以檢查我的電子郵件。如何將python腳本的輸出發送到電子郵件地址
語言:PYTHON。操作系統:Linux Mint 10 Julia。謝謝
我有一個線程化的python腳本,它在局域網上ping了20個節點,並打印出每個節點的狀態:節點處於活動狀態,節點處於關閉狀態等。 我希望將這個輸出發送到我的電子郵件帳戶,因爲我打算讓這個腳本每週運行一次,而且如果我身體上遠離LAN,我不必擔心,我可以檢查我的電子郵件。如何將python腳本的輸出發送到電子郵件地址
語言:PYTHON。操作系統:Linux Mint 10 Julia。謝謝
import smtplib
def prompt(prompt):
return raw_input(prompt).strip()
fromaddr = prompt("From: ")
toaddrs = prompt("To: ").split()
print "Enter message, end with ^D (Unix) or ^Z (Windows):"
# Add the From: and To: headers at the start!
msg = ("From: %s\r\nTo: %s\r\n\r\n"
% (fromaddr, ", ".join(toaddrs)))
while 1:
try:
line = raw_input()
except EOFError:
break
if not line:
break
msg = msg + line
print "Message length is " + repr(len(msg))
server = smtplib.SMTP('localhost')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
您需要SMTP服務器才能發送電子郵件。檢查Python的smtplib
如果它每週運行一次,您可能會從crontab運行它?
30 2 * * 5 python yourScript.py | mail -s outputFromScript [email protected]
看看記錄和logging.config,我用這個之前從腳本收到錯誤消息在後臺運行
http://docs.python.org/library/logging.html
例如
import logging
import logging.config
logDir = "./logs/"
logging.config.fileConfig(logDir+'logging.conf')
logger = logging.getLogger('email')
logger.debug('THIS IS A DEBUG MESSAGE')
logger.error('THIS IS AN ERROR')
然後logging.conf
[loggers]
keys=root,email
[logger_root]
level=DEBUG
handlers=rotatingFileHandler
[logger_email]
level=ERROR
handlers=email
qualname=email
[formatters]
keys=emailFormatter,rotatingFormatter
[formatter_emailFormatter]
format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s
[formatter_rotatingFormatter]
format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s
datefmt=%m-%d %H:%M
[handlers]
keys=email,rotatingFileHandler
[handler_email]
class=handlers.SMTPHandler
level=ERROR
formatter=emailFormatter
args=('mail.xxx','[email protected]',['[email protected]',],'ERROR!',('[email protected]','xxx'))
[handler_rotatingFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=rotatingFormatter
args=('./logs/log.out', 'maxBytes=1000000', 'backupCount=5')
從上面我會收到「這是一個錯誤」在我的電子郵件。
你在哪個平臺上? –