有没有一个 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 中介,如果您 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
答案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 登录页面,也就是说这个脚本从未生成屏幕通知!值得关注。