Debian 11下Fail2ban状态检测与自动重启脚本需求
Debian 11 自动检测并重启 Fail2ban 的 Bash 脚本
以下脚本会定期检查 Fail2ban 服务状态,一旦发现服务未正常运行,自动重启并记录操作日志:
#!/bin/bash # 定义日志文件路径,可根据需求修改 LOG_FILE="/var/log/fail2ban_restart.log" # 检测 Fail2ban 是否处于活跃状态 if ! systemctl is-active --quiet fail2ban; then # 记录重启时间和原因 echo "$(date '+%Y-%m-%d %H:%M:%S') - Fail2ban 未运行,执行重启操作" >> "$LOG_FILE" # 重启 Fail2ban 服务 systemctl restart fail2ban # 验证重启是否成功 if systemctl is-active --quiet fail2ban; then echo "$(date '+%Y-%m-%d %H:%M:%S') - Fail2ban 重启成功" >> "$LOG_FILE" else echo "$(date '+%Y-%m-%d %H:%M:%S') - 警告:Fail2ban 重启失败,请手动检查" >> "$LOG_FILE" fi else # 可选:记录服务正常状态(不需要可注释掉) # echo "$(date '+%Y-%m-%d %H:%M:%S') - Fail2ban 运行正常" >> "$LOG_FILE" : fi
脚本说明
systemctl is-active --quiet fail2ban:静默检测服务状态,无输出,通过退出码判断是否活跃(0=活跃,非0=未运行)- 日志文件默认存放在
/var/log/fail2ban_restart.log,可自行修改路径 - 重启后会再次验证服务状态,确保操作有效并记录结果
部署步骤
- 将脚本保存为
/usr/local/bin/check_fail2ban.sh(路径可自定义) - 赋予执行权限:
chmod +x /usr/local/bin/check_fail2ban.sh - 设置定时任务,让脚本定期运行(比如每5分钟检测一次):
执行crontab -e,添加如下内容:
保存退出后,crontab会自动生效*/5 * * * * /usr/local/bin/check_fail2ban.sh
日志查看
需要查看重启记录时,直接查看日志文件即可:
cat /var/log/fail2ban_restart.log
内容的提问来源于stack exchange,提问作者Tomasz M
相关产品推荐
相关产品推荐

