Shell 使用ping命令测试多个unix服务器的连接,如果无法访问任何主机,则通过邮件发送服务器的主机名/IP地址

Shell 使用ping命令测试多个unix服务器的连接,如果无法访问任何主机,则通过邮件发送服务器的主机名/IP地址,shell,unix,Shell,Unix,使用ping命令测试多个unix服务器的连接,如果无法访问任何主机,则通过邮件发送服务器的主机名/ip地址 有一个文件host.txt,其中包含我们要ping的服务器列表 例如 www.abc.domain01.com www.abc.domain02.com www.abc.domain03.com www.abc.domain04.com 在本例中,我考虑总共有四台服务器;但它可以是100台服务器 我知道如何检查多个服务器的连接,但如果无法访问特定服务器,我不知道如何获取邮件 我的代码是

使用ping命令测试多个unix服务器的连接,如果无法访问任何主机,则通过邮件发送服务器的主机名/ip地址

有一个文件
host.txt
,其中包含我们要ping的服务器列表 例如

www.abc.domain01.com
www.abc.domain02.com
www.abc.domain03.com
www.abc.domain04.com 
在本例中,我考虑总共有四台服务器;但它可以是100台服务器 我知道如何检查多个服务器的连接,但如果无法访问特定服务器,我不知道如何获取邮件 我的代码是

email=XXXXXXXXXXXXX@domain.com
for i in $(cat host.txt)
do 
      ping -c4 $i 

if [ $? -ne 0 ]
then 

echo "$i is unreachable"|mail -s "ping alert" $email 
    fi
done 

假设服务器
www.abc.domain01.com
无法访问,因此我想查看邮件中的输出,如
www.abc.domain01.com

可能重复的,我没有看到任何明显错误。你有什么证据表明它不起作用?
echo“从我的服务器测试”| mail-s“mailTest”myAddr@myMailHost.com
工作?如果没有,那么
sendmail
可能不起作用,或者有规则阻止了您的邮件或其他许多事情。真正的错误信息最适合您的问题。祝你好运。这是邮件的问题,现在它工作得很好。我有一个疑问。。。我不想在屏幕上显示ping的输出。一旦我运行此脚本,我只想在电子邮件中显示警报。在我应该重定向输出的地方,请帮助我。当您使用
$?
测试ping状态时,您可以将
ping
输出重定向到/dev/null,即
ping-c4$i2>/dev/null
。检查
manping
。也许您的版本中有类似于静默的
-s