Нужен апплет для сообщения о недоступности веб-сайтов

Существует ли апплет gnome, который позволит мне настроить список URL-адресов для проверки и сообщать о недоступности некоторых из них? Предпочтительно с помощью уведомлений.

Проверка должна использовать HTTP GET или HEAD.

0
задан 9 November 2010 в 18:51

3 ответа

Может быть, вы можете взять это за основу (нужны 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()
0
ответ дан 9 November 2010 в 18:51

Вы можете установить 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, а это означает, что этот скрипт никогда не генерировал экранное уведомление! Один смотреть.

0
ответ дан 9 November 2010 в 18:51

Вы могли бы написать небольшой скрипт 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
0
ответ дан 9 November 2010 в 18:51

Другие вопросы по тегам:

Похожие вопросы: