前回はwgetの結果をリダイレクトしたものをipとして使用していたが、全部Pythonでやるために、urllib2パッケージを使用した。
sendIP.py
#!/usr/bin/env python # -*- coding: utf-8 -*- # Get global IP. import urllib2 ip = urllib2.urlopen('http://ipcheck.ieserver.net').read() print ip # Send IP by Gmail. import smtplib from email.MIMEText import MIMEText def create_message(from_addr, to_addr, subject, body): msg = MIMEText(body) msg['Subject'] = subject msg['From'] = from_addr msg['To'] = to_addr return msg def send_via_gmail(gmail_id, gmail_pw, msg): s = smtplib.SMTP('smtp.gmail.com', 587) s.ehlo() s.starttls() s.ehlo() s.login(gmail_id, gmail_pw) s.sendmail(msg['From'], msg['To'], msg.as_string()) s.close() if __name__ == '__main__': from_addr = 'from@gmail.com' to_addr = 'to@gmail.com' gmail_id = 'example@gmail.com' gmail_pw = 'password' msg = create_message(from_addr, to_addr, 'IP', str(ip)) send_via_gmail(gmail_id, gmail_pw, msg)
※追記: debian系のcronではファイル名に".(ドット)"が含まれていると実行されないようなので、拡張子を外しておいたほうがいいですね。
※さらに追記: /etc/cron.hourly/以下に配置するとroot権限でシステムワイドに実行されるようだ。さらに実行されるたびに"You have new mail."とか出ちゃったりするのでうざいことこの上ない。
crontab -u ユーザ名 -e #エディタ起動 MAILTO="" 0 * * * * /hoge/piyo/myscript.pyとか書いておくと、任意の場所から毎時0分に特定のユーザ権限で実行してくれる。こっちのほうが少し安心だし、MAILTO=""と書いておくことで、実行するたびにメールを送ることもない。
久々に生産的なことをやった気がする。次はRubyで実装してみるかな~。
参考URL
0 件のコメント:
コメントを投稿