#!/bin/bash # DNS监控脚本 - 每10秒检查dns.conf是否有变化 # 如果有变化则执行update-dns.sh脚本 DNS_CONF="/private/argus/etc/dns.conf" DNS_BACKUP="/tmp/dns.conf.backup" UPDATE_SCRIPT="/private/argus/etc/update-dns.sh" LOG_FILE="/var/log/supervisor/dns-monitor.log" # 确保日志文件存在 touch "$LOG_FILE" log_message() { echo "$(date '+%Y-%m-%d %H:%M:%S') [DNS-Monitor] $1" >> "$LOG_FILE" } log_message "DNS监控脚本启动" while true; do if [ -f "$DNS_CONF" ]; then if [ -f "$DNS_BACKUP" ]; then # 比较文件内容 if ! cmp -s "$DNS_CONF" "$DNS_BACKUP"; then log_message "检测到DNS配置变化" # 更新备份文件 cp "$DNS_CONF" "$DNS_BACKUP" # 执行更新脚本 if [ -x "$UPDATE_SCRIPT" ]; then log_message "执行DNS更新脚本: $UPDATE_SCRIPT" "$UPDATE_SCRIPT" >> "$LOG_FILE" 2>&1 if [ $? -eq 0 ]; then log_message "DNS更新脚本执行成功" else log_message "DNS更新脚本执行失败" fi else log_message "警告: 更新脚本不存在或不可执行: $UPDATE_SCRIPT" fi fi else # 第一次检测到配置文件,执行更新脚本 if [ -x "$UPDATE_SCRIPT" ]; then log_message "执行DNS更新脚本: $UPDATE_SCRIPT" "$UPDATE_SCRIPT" >> "$LOG_FILE" 2>&1 if [ $? -eq 0 ]; then log_message "DNS更新脚本执行成功" # 第一次运行,创建备份并执行更新 cp "$DNS_CONF" "$DNS_BACKUP" log_message "创建DNS配置备份文件" else log_message "DNS更新脚本执行失败" fi else log_message "警告: 更新脚本不存在或不可执行: $UPDATE_SCRIPT" fi fi else log_message "警告: DNS配置文件不存在: $DNS_CONF" fi sleep 10 done