Precisa de um applet para relatar a indisponibilidade de sites

0

Existe um miniaplicativo gnome que me permitirá configurar uma lista de URLs a serem verificados e informar quando alguns estiverem indisponíveis? De preferência usando notificações.

A validação deve usar HTTP GET ou HEAD.

    
por João Pinto 09.11.2010 / 14:48

3 respostas

3

Talvez você possa usar isso como base (precisa de python-appindicator e 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()
    
por htorque 09.11.2010 / 17:00
3

Você pode escrever um pequeno script para enviar notificações para você ... Algo como:

#!/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

Sua lista de sites para conferir vidas em ~/.sites .

Então você só precisa cronar para executar. Pode ser necessário exportar DISPLAY=:0 no cron para que a notificação apareça no lugar certo.

Observe que, se você usar um intermediário de DNS como o OpenDNS, se um nome de domínio que você fizer ping não existir, ele acessará o servidor de pesquisa sem domínio. Portanto, é provavelmente mais seguro (embora menos informativo) usar IPs.

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
    
por Oli 09.11.2010 / 15:44
1

Você pode instalar o link-monitor-applet  ( veja a página inicial ), que coloca esta funcionalidade no seu painel do gnome com muita elegância. Link Monitor está nos repositórios, então:

sudo apt-get install link-monitor-applet

No entanto, suspeito que desde que você disse "URL" você pode estar olhando para algo que faz um GET para os sites, informando se ele não recebe uma resposta? Você pode esclarecer se um simples ping é suficiente? Alguns sites, por exemplo, não permitem que você os faça ping. Pior, fazer um ping não garante que o site esteja funcionando.

Como você especificou que gostaria que essa solução fosse baseada em URL, é possível usar a solução de Oli acima, mas primeiro:

sudo apt-get instala o httping

E o script se torna:

#!/bin/bash

for site in $(cat ~/.sites); do
    if ! httping -c 1 -g "$site" &>/dev/null ; then 
      notify-send "$site is down!!"
    fi
done

NOTA: Isso não funcionou para mim até que percebi que tinha configurado meu roteador doméstico para usar o OpenDNS. Isso significa que os sites com tempo limite são redirecionados para a página inicial do OpenDNS, o que significa que esse script nunca gerou uma notificação na tela! Um para assistir.

    
por Scaine 09.11.2010 / 16:04