我正在尝试编写一个 shell 脚本,每 1 小时 ping 5 台主机,如果它从任何这些主机收到任何失败,它会发送一封电子邮件警报,其中包含此失败 ping 的结果。
答案1
像这样的东西应该有效:
#!/bin/bash
ping_targets="server1 server2 server3 server4 server5"
failed_hosts=""
for i in $ping_targets
do
ping -c 1 $i > /dev/null
if [ $? -ne 0 ]; then
if [ "$failed_hosts" == "" ]; then
failed_hosts="$i"
else
failed_hosts="$failed_hosts, $i"
fi
fi
done
if [ "$failed_hosts" != "" ]; then
echo $failed_hosts| mailx -s "Failed ping targets" email@domain
fi
将其放入脚本中,更改主机名和电子邮件地址,使其可执行,并向 cron 添加一个条目,使其每小时运行一次。