Существует ли апплет gnome, который позволит мне настроить список URL-адресов для проверки и сообщать о недоступности некоторых из них? Предпочтительно с помощью уведомлений.
Проверка должна использовать HTTP GET или HEAD.
Может быть, вы можете взять это за основу (нужны python-appindicator и python-notify):
import gtk
import gobject
import urllib2
import pynotify
import appindicator
urls = ["http://askubuntu.com",
"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()
Вы можете установить link-monitor-applet ( см. Домашнюю страницу ), который очень элегантно размещает эту функцию на вашей панели gnome. Link Monitor находится в репозиториях, поэтому:
sudo apt-get install link-monitor-applet
Тем не менее, я подозреваю, что, поскольку вы сказали «URL», вы можете искать что-то, что делает GET для веб-сайтов, сообщая, если оно не получает ответ? Можете ли вы уточнить, достаточно ли простого пинга? Например, некоторые веб-сайты не позволяют вам пинговать их. Хуже того, получение пинга не гарантирует, что веб-сайт действительно работает.
Поскольку вы указали, что вы хотите, чтобы это решение основывалось на URL, вы можете использовать решение Оли выше, но сначала:
sudo apt-get install 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, а это означает, что этот скрипт никогда не генерировал экранное уведомление! Один смотреть.
Вы могли бы написать небольшой скрипт 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