66 lines
2.1 KiB
Bash
66 lines
2.1 KiB
Bash
#!/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
|
|
# 第一次运行,创建备份并执行更新
|
|
cp "$DNS_CONF" "$DNS_BACKUP"
|
|
log_message "创建DNS配置备份文件"
|
|
|
|
# 第一次检测到配置文件,执行更新脚本
|
|
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
|
|
log_message "警告: DNS配置文件不存在: $DNS_CONF"
|
|
fi
|
|
|
|
sleep 10
|
|
done |