"""python2 only"""
import sys
import os
import mmap
import smtplib
from collections import namedtuple
Mail = namedtuple('Mail', ['sender', 'user', 'password', 'server'])
mailConfig = Mail(
'[EMAIL][email protected][/EMAIL]',
'your.user',
'your.password',
'smtp.ask.your.it.dude' # catch him when he's not eating his Burrito
)
def send_mail(dest, filename, conf=mailConfig):
"""this is not really working"""
server = smtplib.SMTP(conf.server)
server.starttls()
server.login(conf.user, conf.password)
with open(filename) as f:
server.sendmail(conf.sender, dest, f.read())
server.quit()
def word_found(filename, word):
"""True iff word is in given file"""
with open(filename) as f:
return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ).find(word) >= 0
def list_files_with_word(root, word):
"""return filenames containing given word"""
for top, _, files in os.walk(root):
for filename in files:
fpath = os.path.join(top, filename)
if word_found(fpath, word):
yield fpath
if __name__ == '__main__':
for error_file in list_files_with_word(sys.argv[1], 'ERROR'):
send_mail(['[EMAIL][email protected][/EMAIL]'], error_file)