我有 5 台主机,我需要 ping 一下,如果其中一台宕机了,我应该通过电子邮件收到警报,这可能吗?

我有 5 台主机,我需要 ping 一下,如果其中一台宕机了,我应该通过电子邮件收到警报,这可能吗?

我有 5 台主机,如果其中任何一台宕机,我需要 ping 一下,通过电子邮件通知我,可以吗?每 20 分钟检查一次。有人能帮帮我吗?提前谢谢了...

我已经使用过这个脚本。我需要做任何更改才能获得预期的结果吗?

请提出任何意见。

    #!/bin/bash

    for i in $( cat $HOME/iplist.txt )
    do
    ping -q -c2 $i > /dev/null
    if [ $? -eq 0 ]
    then
    echo $i "Pingable"
    else
    echo $i "Not Pingable"
    fi
    done

答案1

您的脚本看起来不错。您应该添加exit 0/ exit 1,表示失败 / 成功。更多信息请见下文。

每 20 分钟检查一次

如果脚本需要始终运行(每 20 分钟在后台运行一次),则应使用cron系统上已提供的。

就像这样,如果脚本返回 1(FAILURE),则脚本的所有输出都将邮寄给 root。但是默认情况下,root 邮件只会发送到某个文件夹。您需要安装和配置邮件守护程序以将 root 邮件转发到您的个人邮件地址。如何做到这一点,例如这里解释:https://superuser.com/questions/306163/what-is-the-you-have-new-mail-message-in-linux-unix

或者在这里: 转发所有电子邮件的简便方法

编辑:

好的,这里有一些可以完成任务的命令。

1.) 首先,您需要一个脚本版本,该版本在失败时退出 1。类似这样的代码应该可以做到:

#!/bin/bash

ALL_HOSTS_AVAILABLE=true
for i in $( cat $HOME/iplist.txt )
do
   ping -q -c2 $i > /dev/null
   if [ $? -eq 0 ]
   then
      echo $i "Pingable"
   else
      echo $i "Not Pingable"
      ALL_HOSTS_AVAILABLE=false
fi
done

if [ "$ALL_HOSTS_AVAILABLE" = false ] ; then
   echo 'Some hosts were not available!'
   exit 1
fi
exit 0

2.) 现在确保您已为您的用户设置了 sudo 权限(您不想直接以 root 身份执行操作)。如果没有,请按照本手册操作: 如何将用户添加到“sudo”组? 也许你首先需要安装 sudo 包

su root
apt-get install sudo

3.) 将脚本复制到所有用户可见的某个文件夹,并将其交给 root。例如:

sudo cp myScript /usr/local/bin
sudo chown root /usr/local/bin/myScript
sudo chgrp root /usr/local/bin/myScript

4.) 设置一个 cronjob 来运行你的脚本

# write out current crontab
crontab -l > mycron
# echo new cron into cron file */20 means each 20 minutes
# Check https://de.wikipedia.org/wiki/Cron for format
echo "*/20 * * * * /usr/local/bin/myScript" >> mycron
# install new cron file
sudo crontab mycron
rm mycron

5.) 安装一些 MTA,这样你就可以使用电子邮件通知了。看起来最简单的一个是nullmailer

sudo apt-get install nullmailer

nullmailer.. 我不知道详细信息,只需通过谷歌寻求帮助,以正确的方式进行设置。

相关内容