Средства:
- python 2.6
- Сайт myip.ru
Неплохо было бы вынуть ip с этого сайта. Использовать поиск по тегу не рационально. Регулярные выражения напрашиваются сами собой (благо кроме целевого ip больше ничего нет). Немного полистав вики составил простенькое выражение:
([1-2]{0,1})([0-9]{1,2})(\.([1-2]{0,1})([0-9]{1,2})){3}
Но оно меня не удовлетворило. Порылся в гугле толком ничего не нашел. Спросил на конфе питона (python@conference.jabber.ru) отправили на хабр и посоветовали такой вариант:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}
Собственно его я и использовал.import re
import urllib
def getMyIP():
f = urllib.urlopen("http://www.myip.ru/get_ip.php?loc=")
m = re.search("(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}",f.read())
f.close()
if m is not None:
return m.group(0)
else:
return None
Дальше, надо бы как-то отправить сообщение себе на почту... Нашел простую реализацию (я бы и сам до нее дошел просто первое что вышло под запрос оказалось в самую точку):
import smtplib
from email.MIMEText import MIMEText
def sendToMail(IP):
# отправитель
me = 'segyrn@yandex.ru'
# текст письма
text = str(IP)
# заголовок письма
subj = 'Новый IP!'
# параметры SMTP-сервера
server = "smtp.yandex.ru" # "smtp.yandex.ru"
port = 25
user_name = "mymail@mymail.net"
user_passwd = "mypassword"
# формирование сообщения
msg = MIMEText(text, "", "utf-8")
msg['Subject'] = subj
msg['From'] = me
msg['To'] = me
# отправка
s = smtplib.SMTP(server, port)
s.starttls()
s.login(user_name, user_passwd)
s.sendmail(me, you, msg.as_string())
s.quit()
return "ok"
Ну и не гоже каждый раз отправлять письма, спама мне и так хватает.
import os
def check():
IP = getMyIP()
dFile = open(".curentIp","r")
curIP = dFile.readline()
dFile.close()
if str(IP) == curIP:
return None
else:
os.remove(".curentIp")
dFile = open(".curentIp","w")
dFile.write(str(IP))
dFile.close()
sendToMail(IP)
return "ok"
Теперь этот скрипт можем спокойно ложить в cron:
0 8-18 * * 1-5 ~/scripts/forWork/sendip.py
Запускать скрипт каждый час с 8-18, с понедельника по пятницу.PS: на самом деле после обсуждения статьи на linux_irk@conference.jabber.ru был найден еще более простой способ описан тут
Комментариев нет:
Отправить комментарий