Форум сайта python.su
Всем привет!
Можете помочь?
Возможно ли следующее?
есть страничка в интернете, которую нужно проверять периодически (загружается/не загружается, итак каждые полчаса). Если страничка не загружается, то нужно отправить сообщение на E-mail. Это реально сделать на питоне?
Офлайн
Можно для этого использовать модуль urllib и cron(ну или любой другой планировщик)
Офлайн
slivlenСпасибо! А можно простенький пример кода?
Можно для этого использовать модуль urllib и cron(ну или любой другой планировщик)
Офлайн
import urllib
import smtplib
fromaddr = “lala@smtp.ru”
toaddr = “lala2@smtp.ru”
msg = “serv down! ahtung!”
try:
url = urllib.urlopen("http://ya.ru")
except:
smtp = smtplib.SMTP('smtp.ru')
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
короче в таком духе, тоько екшепшин обрабатывать надо бы
Офлайн
slav0nic, спасибо!
А как определить когда странички нет, но появ-ся такое:
ERROR
The requested URL could not be retrieved
While trying to retrieve the URL: http://lalala.ru:9999/
The following error was encountered:
* Connection Failed
The system returned:
(60) Operation timed out
The remote host or network may be down. Please try the request again.
Your cache administrator is admin@myweb.ru.
Generated Wed, число by лалала.ру (squid/2.5.STABLE11)
Отредактировано (Авг. 2, 2006 15:09:47)
Офлайн
ну сам подумай=), если по-простому - то:
if “* Connection Failed ” in url.read():
#send mail
а если сквид возвращает в случае подобной ошибки не 200, то можно и это проанализирловать (но рвдяли он так делает)
Офлайн
проблема в том, когда ставишь "http://myweb.ru:8000" програ думает что страница с ошибкой:
from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText(unicode(“Error”, ‘utf-8’))
msg = ‘Error - page’
you='support@meweb.ru'
me='pc@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection("http://myweb.ru:8000“)
conn.request(”GET“, ”/index“)
r1 = conn.getresponse()
print r1.status
if r1.status!=200:
sendmail()
elif r1.status==200:
print ”Ok“
else:
print ”Gluk“
except:
sendmail()
time.sleep(60*30)
print ”-"*100
run()
страницка http://myweb.ru:8000/index существует.
Офлайн
немного изменил код, ошибка не изчезла
import time,httplib,smtplib
from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText(unicode(Error', ‘utf-8’))
msg = Error - page'
you='support@myweb.ru'
me='pc@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection("http://www.myweb.ru“, port=”8000“)
conn.request(”GET“, ”/index“)
r1 = conn.getresponse()
if r1.status!=200:
sendmail()
elif r1.status==200:
print ”Ok“
else:
print ”Gluk“
except:
sendmail()
time.sleep(10)
print ”-"*100
run()
Офлайн
Эту проблему решил
# -*- coding: utf-8 -*-
import time,httplib,smtplib
from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText(unicode('Ошибка на главной странице\n\
перейти на http://myweb.ru:8000', ‘utf-8’))
msg = ‘Error’
you='support@myweb.ru'
me='pc@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection(“200.200.200.200”, port=“9999”)
conn.request(“GET”, “/index”)
r1 = conn.getresponse()
print r1.status
if r1.status!=200 and r1.status!=403:
sendmail()
elif r1.status==200 or r1.status==403:
print “Ok”
else:
print “Gluk”
except:
sendmail()
time.sleep(10)
print “-”*100
run()
но получаю ошибку:
Traceback (most recent call last):
File “C:\test2\url_smtp_alien.py”, line 38, in ?
run()
File “C:\test2\url_smtp_alien.py”, line 31, in run
sendmail()
File “C:\test2\url_smtp_alien.py”, line 14, in sendmail
server.sendmail(me, you, msg.as_string())
File “C:\Python24\lib\email\Message.py”, line 129, in as_string
g.flatten(self, unixfrom=unixfrom)
File “C:\Python24\lib\email\Generator.py”, line 82, in flatten
self._write(msg)
File “C:\Python24\lib\email\Generator.py”, line 113, in _write
self._dispatch(msg)
File “C:\Python24\lib\email\Generator.py”, line 139, in _dispatch
meth(msg)
File “C:\Python24\lib\email\Generator.py”, line 185, in _handle_text
self._fp.write(payload)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-5: ordinal not in range(128)
Как обойти ошибку?
Отредактировано (Авг. 2, 2006 13:40:23)
Офлайн
сделал:
# -*- coding: utf-8 -*-
import time,httplib,smtplib
from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText('Ошибка на главной странице\n\
перейти на http://myweb.ru:8000', _subtype='text/html', _charset=“utf-8”)
msg = ‘Ошибка на главной странице’
you='support@myweb.ru'
me='support@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection(“200.200.200.200”, port=“9999”)
conn.request(“GET”, “/index”)
r1 = conn.getresponse()
print r1.status
if r1.status!=200 and r1.status!=403:
sendmail()
elif r1.status==200 or r1.status==403:
print “Ok”
else:
print “Gluk”
except:
sendmail()
time.sleep(60*30)
print “-”*100
run()
print “-”*100
slav0nic, большое спасибо! Если бы в этом форуме можно было поставить плюс… Скажи как отблагодарить?
Офлайн