Как отправить вывод из скрипта Python на адрес электронной почты - PullRequest
1 голос
/ 09 марта 2011

У меня есть многопоточный скрипт на python, который пингует 20 узлов в локальной сети и распечатывает состояние каждого из них: узел активен, узел выключен и т. Д. Я хотел бы, чтобы этот вывод был отправлен на мою учетную запись электронной почты, потому что я собираюсь запускать этот скрипт один раз в неделю, сам по себе, и если я физически удален от локальной сети, мне не о чем беспокоиться, я могу просто проверьте мою электронную почту.

Язык: ПИТОН. ОС: Linux Mint 10 Julia. Спасибо

Ответы [ 4 ]

8 голосов
/ 09 марта 2011

Если он запускается раз в неделю, вы, вероятно, запустите его из crontab?

30 2 * * 5  python yourScript.py | mail -s outputFromScript your@email.address
5 голосов
/ 09 марта 2011

Используйте smtplib .Пример , который они предоставляют, довольно хорош.

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()
0 голосов
/ 09 марта 2011

Взгляните на logging и 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','x@x.com',['y@y.com',],'ERROR!',('x@x.com','xxx'))

[handler_rotatingFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=rotatingFormatter
args=('./logs/log.out', 'maxBytes=1000000', 'backupCount=5')

Исходя из вышеизложенного, я получу "ЭТО ОШИБКА" в моем письме.

0 голосов
/ 09 марта 2011

Вам нужен SMTP-сервер для отправки электронной почты. Проверьте smtplib для Python

...