前回の改良版。my_ipというファイルに前回取得時のIPを保存しておき、現在取得したIPとの差分をみるように変更。IPが変わっていたときだけ、メールで通知するようになった。
sendIP.py
06 | f = open (filename, 'r') |
11 | def save_ip(filename, ip): |
12 | f = open (filename, 'w') |
18 | ip = urllib2.urlopen('http: / / ipcheck.ieserver.net').read() |
23 | from email.MIMEText import MIMEText |
25 | def create_message(from_addr, to_addr, subject, body): |
27 | msg['Subject'] = subject |
28 | msg['From'] = from_addr |
32 | def send_via_gmail(gmail_id, gmail_pw, msg): |
33 | s = smtplib.SMTP('smtp.gmail.com', 587 ) |
37 | s.login(gmail_id, gmail_pw) |
38 | s.sendmail(msg['From'], msg['To'], msg.as_string()) |
41 | if __name__ = = '__main__': |
42 | from_addr = 'hoge@gmail.com' |
43 | to_addr = 'piyo@gmail.com' |
44 | gmail_id = 'fuga@gmail.com' |
49 | old_ip = load_ip(ip_file) |
55 | body = 'IP has changed! ' + old_ip + ' - - > ' + cur_ip |
56 | msg = create_message(from_addr, to_addr, 'IP', body) |
57 | send_via_gmail(gmail_id, gmail_pw, msg) |
58 | save_ip(ip_file, cur_ip) |
my_ipというファイルがないと失敗するので、あらかじめ作成しておきましょう。本当はこのへんも例外とかで処理しなきゃダメなんだろうけどね。
pythonのモジュールの充実っぷりに泣いた
返信削除デフォルトで使えるってのはすごく重要だってRubyOnRailsの作者の人も言ってましたね~
返信削除