需要一个小程序来报告网站不可用

需要一个小程序来报告网站不可用

有没有一个 gnome 小程序可以让我配置要验证的 URL 列表,并在某些 URL 不可用时报告?最好使用通知。

验证必须使用 HTTP GET 或 HEAD 。

答案1

也许你可以以此为基础(需要 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()

答案2

你可以编写一个小的 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

然后你只需要在 cron 中运行它。你可能需要DISPLAY=:0在 cron 中导出,这样通知才会显示在正确的位置。

请注意,如果您使用 OpenDNS 等 DNS 中介,如果您 p​​ing 的域名不存在,它将访问其无域搜索服务器。因此,使用 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

答案3

您可以安装链路监控小程序查看主页) 可以将此功能非常优雅地放在您的 gnome 面板上。链接监视器位于存储库中,因此:

sudo apt-get install link-monitor-applet

但是,我怀疑既然你说的是“URL”,那么你可能正在查看某个向网站执行 GET 操作的东西,如果没有收到响应,则报告?你能解释一下简单的 ping 是否就足够了吗?例如,有些网站不允许您 ping 它们。更糟糕的是,收到 ping 并不能保证网站确实正常运行。

由于您已指定希望此解决方案基于 URL,因此您可以使用上面的 Oli 解决方案,但首先:

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 登录页面,也就是说这个脚本从未生成屏幕通知!值得关注。

相关内容