João Pinto Asked: 2010-11-10 05:48:23 +0800 CST2010-11-10 05:48:23 +0800 CST 2010-11-10 05:48:23 +0800 CST 需要一个小程序来报告网站不可用 772 是否有一个 gnome 小程序可以让我配置要验证的 URL 列表并在某些不可用时报告?最好使用通知。 验证必须使用 HTTP GET 或 HEAD。 applet monitoring 3 个回答 Voted Oli 2010-11-10T06:44:12+08:002010-11-10T06:44:12+08:00 您可以编写一个小的 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 中介,如果您 ping 的域名不存在,它将访问他们的无域搜索服务器。因此,使用 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 Best Answer htorque 2010-11-10T08:00:11+08:002010-11-10T08:00:11+08:00 也许你可以以此为基础(需要 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() Scaine 2010-11-10T07:04:04+08:002010-11-10T07:04:04+08:00 您可以安装link-monitor-applet (参见主页),它可以非常优雅地将此功能放在您的 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 登录页面,这意味着该脚本从未生成屏幕通知!一个要看的。
您可以编写一个小的 bash 脚本来向您发送通知……例如:
您要检查的网站列表
~/.sites
。然后你只需要 cron 来运行它。您可能需要
DISPLAY=:0
在 cron 中导出,以便通知显示在正确的位置。请注意,如果您使用像 OpenDNS 这样的 DNS 中介,如果您 ping 的域名不存在,它将访问他们的无域搜索服务器。因此,使用 IP 可能更安全(尽管信息量较少)。
也许你可以以此为基础(需要 python-appindicator 和 python-notify):
您可以安装link-monitor-applet (参见主页),它可以非常优雅地将此功能放在您的 gnome 面板上。链接监视器位于存储库中,因此:
但是,我怀疑既然您说“URL”,您可能正在查看对网站执行 GET 的操作,如果没有得到响应则报告?您能否澄清一个简单的 ping 是否足够?例如,某些网站不会让您 ping 它们。更糟糕的是,获得 ping 并不能保证该网站实际上已启动。
由于您已指定希望此解决方案基于 URL,因此您可以使用上面 Oli 的解决方案,但首先:
sudo apt-get 安装 httping
脚本变为:
注意:这对我不起作用,直到我意识到我已将家庭路由器配置为使用 OpenDNS。这意味着超时站点被重定向到 OpenDNS 登录页面,这意味着该脚本从未生成屏幕通知!一个要看的。