解释:当要监控某个服务器(主机)是否在线时,通过每隔一段时间ping服务器的IP,若ping了几次都无法ping通,丢包率为百分之百时,则发送邮件告警不可达。
一、创建脚本
这里将脚本放在了“/root/script/”目录下,脚本名称为:sc_ping.sh
这里实现每10分钟ping某个ip 4次,如果4次都不可达,则发送邮箱告警。
- 因为要有发件人,需要安装mail,参考我的博客安装mail并进行配置:Centos 9 Stream配置QQ邮箱报警-CSDN博客
#!/bin/bash
# 设置要 ping 的 IP 地址和邮箱地址
ip_to_ping="要 ping 的 IP 地址"
email_address="收件人邮箱地址"
# 设置 ping 的次数
ping_count=4
# 循环检测
while true; do
# 执行 ping 命令,将结果存储到变量 result 中
result=$(ping -c $ping_count $ip_to_ping 2>&1)
# 检查 ping 的结果
if [[ $result == *"100% packet loss"* ]]; then
# IP 不可达,发送邮件告警
echo "目标IP地址 $ip_to_ping 不可达,无法联通。" | mail -s "网络故障告警" $email_address
else
# IP 可达,打印成功信息
echo "目标IP地址 $ip_to_ping 可达。"
fi
# 等待 10 分钟
sleep 600
done
- 为脚本文件赋予权限
[root@localhost ~]# chmod +x /root/script/sc_ping.sh # 为脚本文件赋予权限
- 测试
[root@localhost script]# ./sc_ping.sh
二、实现系统启动时自动运行脚本
方法一:
1、安装crontab命令
[root@localhost script]# yum install cronie -y
2、实现sc_ping.sh系统启动时自动运行脚本
①编辑crontab文件
[root@localhost script]# crontab -e
②在打开的编辑器中,添加一行
@reboot /root/script/sc_ping.sh
③检查 crontab
中是否有相关的条目
[root@localhost script]# crontab -l
④重启cron服务并设置自启动
[root@localhost script]# systemctl restart crond # 重启cron服务
[root@localhost script]# systemctl enable crond # 设置cron服务开机自启动
[root@localhost script]# systemctl status crond # 查看cron服务状态
⑤重启系统
[root@localhost script]# reboot
⑥重启完成后,查看 cron
日志中是否有关于 sc_ping.sh
的信息
[root@localhost ~]# cat /var/log/cron | grep sc_ping.sh
方法二:
1、进入/etc/systemd/system/目录
cd /etc/systemd/system/
vi sc_ping.service
2、编辑vi sc_ping.service
[Unit]
Description=Custom Script Auto Start
[Service]
Type=simple
ExecStart=/root/script/sc_ping.sh
[Install]
WantedBy=multi-user.target
3、配置自启用并启动服务
systemctl enable sc_ping.service
systemctl start sc_ping.service
至此,完成!