Нужен апплет для сообщения о недоступности веб-сайтов
Существует ли апплет gnome, который позволит мне настроить список URL-адресов для проверки и сообщать, когда некоторые из них недоступны? Желательно с помощью уведомлений.
Проверка должна использовать HTTP GET или HEAD .
3 ответа
Может быть, вы можете взять это за основу (нужны python-appindicator и python-notify):
import gtk
import gobject
import urllib2
import pynotify
import appindicator
urls = ["http://Ask-ubuntu.ru",
"http://not.available.com"]
ind = appindicator.Indicator("url-checker", "indicator-messages",
appindicator.CATEGORY_APPLICATION_STATUS)
ind.set_status(appindicator.STATUS_ACTIVE)
ind.set_attention_icon ("indicator-messages-new")
menu = gtk.Menu()
# yadda yadda yadda
ind.set_menu(menu)
def update(urls, ind):
err = ""
for url in urls:
try:
if (urllib2.urlopen(url).getcode() != 200):
err += "%s is down\n" % url
except urllib2.URLError:
err += "%s is down\n" % url
if err:
ind.set_status(appindicator.STATUS_ATTENTION)
pynotify.Notification("Bad news:", err).show()
else:
ind.set_status(appindicator.STATUS_ACTIVE)
return True
update(urls, ind)
timeout = 300000 # 5 minutes
gobject.timeout_add(timeout, update, urls, ind)
gtk.main()
Вы могли бы написать небольшой скрипт bash, чтобы бросать вам уведомления... Что-то вроде:
#!/bin/bash
for site in $(cat ~/.sites); do
if ! ping -c 1 -w 5 "$site" &>/dev/null ; then
notify-send "$site is down!!"
fi
done
Ваш список сайтов для проверки жизни в ~/.sites
,
Тогда вам просто нужно справиться с этим. Возможно, вам придется экспортировать DISPLAY=:0
в cron, так что уведомление появляется в нужном месте.
Обратите внимание, что если вы используете DNS-посредника, такого как OpenDNS, если проверяемое вами доменное имя не существует, оно попадет на их поисковый сервер без домена. Поэтому, вероятно, безопаснее (хотя и менее информативно) использовать IP-адреса.
oli@bert:~$ ping asasdslfkjsdlff.com
PING asasdslfkjsdlff.com (67.215.65.132) 56(84) bytes of data.
64 bytes from hit-nxdomain.opendns.com (67.215.65.132): icmp_req=1 ttl=54 time=33.1 ms
64 bytes from hit-nxdomain.opendns.com (67.215.65.132): icmp_req=2 ttl=54 time=32.8 ms
Вы можете установить апплет link-monitor-applet ( см. Домашнюю страницу), который очень элегантно размещает эту функциональность на вашей панели gnome. Link Monitor находится в репозиториях, поэтому:
sudo apt-get install link-monitor-applet
Тем не менее, я подозреваю, что, поскольку вы сказали "URL", возможно, вы просматриваете что-то, что делает GET для веб-сайтов, сообщая, если оно не получает ответа? Можете ли вы уточнить, достаточно ли простого пинга? Например, некоторые веб-сайты не позволяют вам пинговать их. Хуже того, получение пинга не гарантирует, что сайт действительно работает.
Поскольку вы указали, что хотите, чтобы это решение основывалось на URL, вы можете использовать решение Оли выше, но сначала:
sudo apt-get установить httping
И сценарий становится:
#!/bin/bash
for site in $(cat ~/.sites); do
if ! httping -c 1 -g "$site" &>/dev/null ; then
notify-send "$site is down!!"
fi
done
ПРИМЕЧАНИЕ: это не работало для меня, пока я не понял, что настроил свой домашний маршрутизатор для использования OpenDNS. Это означает, что сайты с тайм-аутом перенаправляются на целевую страницу OpenDNS, а это означает, что этот скрипт никогда не генерировал экранное уведомление! Один смотреть.