前回の続き。遠隔地ログインしているときグローバルIPが変わっても1時間ごとにGmailにIPを送っておけば安心だよね。というコンセプトでスクリプトを書いてみた。
前回はwgetの結果をリダイレクトしたものをipとして使用していたが、全部Pythonでやるために、urllib2パッケージを使用した。
sendIP.py
06 | ip = urllib2.urlopen('http: / / ipcheck.ieserver.net').read() |
11 | from email.MIMEText import MIMEText |
13 | def create_message(from_addr, to_addr, subject, body): |
15 | msg['Subject'] = subject |
16 | msg['From'] = from_addr |
20 | def send_via_gmail(gmail_id, gmail_pw, msg): |
21 | s = smtplib.SMTP('smtp.gmail.com', 587 ) |
25 | s.login(gmail_id, gmail_pw) |
26 | s.sendmail(msg['From'], msg['To'], msg.as_string()) |
29 | if __name__ = = '__main__': |
30 | from_addr = ' from @gmail.com' |
31 | to_addr = 'to@gmail.com' |
32 | gmail_id = 'example@gmail.com' |
35 | msg = create_message(from_addr, to_addr, 'IP', str (ip)) |
36 | send_via_gmail(gmail_id, gmail_pw, msg) |
あとはこいつを/etc/cron.hourly/にコピーするかリンクすればおk。1時間ごとにGmail宛てに自分のグローバルIPを送ってくれます。
※追記: debian系のcronではファイル名に".(ドット)"が含まれていると実行されないようなので、拡張子を外しておいたほうがいいですね。
※さらに追記: /etc/cron.hourly/以下に配置するとroot権限でシステムワイドに実行されるようだ。さらに実行されるたびに"You have new mail."とか出ちゃったりするのでうざいことこの上ない。
4 | 0 * * * * /hoge/piyo/myscript.py |
とか書いておくと、任意の場所から毎時0分に特定のユーザ権限で実行してくれる。こっちのほうが少し安心だし、MAILTO=""と書いておくことで、実行するたびにメールを送ることもない。
久々に生産的なことをやった気がする。次はRubyで実装してみるかな~。
参考URL
0 件のコメント:
コメントを投稿