我正在寻找一种超级简单的方法来从一台服务器监控另一台服务器,以防另一台服务器出现故障(例如基于 ping),然后发送电子邮件。有没有类似的东西可以通过标准包管理器(debian)安装?我知道 nagios 和 monit 之类的东西,但它们比我需要的要复杂得多。
(服务器位于私人网络上,因此我无法使用第三方网络服务)
谢谢
答案1
我知道你正在寻找可以通过包管理器安装的东西,但如果你正在寻找一些简单的脚本,下面的脚本可以为你提供帮助
SERVERIP=192.168.0.1
[email protected]
ping -c 3 $SERVERIP > /dev/null 2>&1
if [ $? -ne 0 ]
then
mail -s "Server $SERVERIP is down" -t "$NOTIFYEMAIL" < /dev/null
fi
答案2
如果您需要的只是在没有收到 ping 响应时发送电子邮件,则以下方法可能会有效:
#!/bin/sh
while oping -c 20 -i 1 -Z 15 otherhost; do
:
done
echo "otherhost is down" | mail -s "otherhost is down" recipient@domain
这需要同名包中的 oping。上面的开关使其以 1 秒的间隔发送 20 个 ping;如果超过 15% 的 ping 没有得到回复(即 3 个数据包),oping 将失败退出,从而导致 while 循环退出并运行 mail 命令。如果您还安装了 moreutils 包,您甚至可以轻松地使最后一个(失败的)oping 输出包含在邮件中,如下所示:
#!/bin/sh
while chronic oping -c 20 -i 1 -Z 15 otherhost; do
:
done | mail -E -s "otherhost is down" recipient@domain