我的 Mac 以 dyndns ip 运行服务器。要正常工作,它必须始终连接到互联网。但不幸的是,它似乎一天中没有连接很多次。所以我需要一个工具,每分钟检查一次 Mac 是否连接到互联网(即尝试访问谷歌),并将其写入日志文件。
你知道有什么可以帮忙的吗?我需要检查机器本身是否有互联网。Mac OS 10.5。谢谢大家!!
答案1
您可以在普通 Mac 上安装 nagios,它们也是 Unix 机器:)
这样的脚本可以吗?
#!/bin/bash
LOG=/tmp/LOG
rm -f $LOG
while ( true );
do
date >> $LOG;
curl http://www.google.com/ > /dev/null 2>> $LOG
sleep 60 ;
done
答案2
Nagios 将在 Mac 上运行,并且它是开源/免费的!
http://www.macworld.com/article/134079/2008/06/nagios.html
安装 Nagios 后,您可以将任何运行 Mac OS X Server 的 Mac 变成一个网络监控站,能够在其他人注意到您之前通知您服务器上的硬件和软件问题。Nagios 可以使用电子邮件和短信通知您问题和问题恢复。(后者很重要,因为它通常可以让您免于深夜远程访问会话。)由于 Nagios 需要 Perl、Apache、SNMP 和 Mac OS X Server 附带或可以轻松安装的几个其他程序,因此对于任何网络管理员来说,这都是更好地监控其网络的好方法。
答案3
在我看来,Nagios 在这方面有点小题大做。另外,导致离线阶段延长的一个可能原因是缺少网络流量,因此您的路由器会离线。
上面的 James 脚本可以防止这种情况发生,我只需稍微修改一下就可以避免每 60 秒下载一次 google 页面。
只需将 curl google.com 行替换为以下内容
ping -c1 -t 5 www.google.com > /dev/null
if [ "$?" = "0" ]; then
echo "I am online" > $LOG
else
echo "Boo, the internet is broken, google doesn't answer" > $LOG
fi
或者,如果您只想记录离线阶段,请像这样修改完整脚本:
#!/bin/bash
LOG=/tmp/internetlog
rm -f $LOG
while ( true );
do
ping -c1 -t 5 www.google.com > /dev/null
if [ "$?" -gt "0" ]; then
echo `date` " I am offline" >> $LOG
fi
sleep 60 ;
done
这取代了 curl 调用,它使用一个带有 5 秒超时的单次 ping 从 google 下载完整页面,这通常已经足够了。
答案4
这可能有点过头了,但我建议你使用 nagios 的插件链接文本, 使用它们您可以编写一个简单的 shell 脚本来执行您需要的操作,或者我猜另一种选择您也可以使用简单的 ping 和 shell 脚本,但使用 nagios 插件可以更轻松地完成。