寻求可定时检测本地AdGuard DNS服务器故障的Linux工具方案
寻求可定时检测本地AdGuard DNS服务器故障的Linux工具方案
嘿,针对你这个需求,我有几个简单又实用的Linux方案,完全能帮你统计本地AdGuard DNS的故障频率:
一、自定义Bash脚本+Dig+Crontab(最推荐,无需额外安装工具)
这是最直接的方案,利用系统自带的dig命令和定时任务来实现,完全符合你“每5分钟查询、跳过缓存、记录成功失败”的要求。
步骤1:编写监控脚本
创建一个名为dns_monitor.sh的脚本,内容如下:
#!/bin/bash # 配置参数,替换成你的实际信息 DNS_SERVER="192.168.x.x" # 你的Raspberry Pi上AdGuard的本地IP TEST_DOMAIN="random-example-domain.com" # 换成你常出问题的陌生域名 LOG_FILE="$HOME/dns_monitor.log" # 日志保存路径,可自行修改 # 获取当前时间戳 TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") # 执行DNS查询,+nocache强制跳过缓存,+short只返回IP结果 dig_result=$(dig @$DNS_SERVER $TEST_DOMAIN +nocache +short) if [ -n "$dig_result" ]; then # 查询成功,记录时间和返回的IP echo "[$TIMESTAMP] SUCCESS: 解析结果 -> $dig_result" >> $LOG_FILE else # 查询失败,记录时间和错误信息 echo "[$TIMESTAMP] FAILED: 无法从 $DNS_SERVER 解析 $TEST_DOMAIN" >> $LOG_FILE fi
步骤2:配置脚本权限
给脚本添加执行权限:
chmod +x /path/to/your/dns_monitor.sh
步骤3:设置定时任务
用crontab配置每5分钟运行一次脚本:
- 打开crontab编辑界面:
crontab -e
- 在末尾添加一行(替换成你的脚本实际路径):
*/5 * * * * /home/your-username/dns_monitor.sh
- 保存退出即可,系统会自动生效。
查看统计结果
日志文件会记录每一次查询的详情,你可以用以下命令快速统计:
- 统计总成功次数:
grep "SUCCESS" ~/dns_monitor.log | wc -l
- 统计总失败次数:
grep "FAILED" ~/dns_monitor.log | wc -l
- 查看所有失败记录的具体时间:
grep "FAILED" ~/dns_monitor.log
二、可选进阶:同时测试多个域名
如果你想同时测试多个陌生域名,只需修改脚本,添加一个域名列表循环测试:
#!/bin/bash DNS_SERVER="192.168.x.x" LOG_FILE="$HOME/dns_monitor.log" # 多个测试域名,用空格分隔 TEST_DOMAINS="example.com random-domain.com test-unknown-site.net" TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") for domain in $TEST_DOMAINS; do dig_result=$(dig @$DNS_SERVER $domain +nocache +short) if [ -n "$dig_result" ]; then echo "[$TIMESTAMP] SUCCESS: $domain -> $dig_result" >> $LOG_FILE else echo "[$TIMESTAMP] FAILED: $domain 解析失败" >> $LOG_FILE fi done
关键说明
*dig +nocache*参数会强制绕过本地DNS缓存,直接向你指定的AdGuard服务器发起查询,完全避免了缓存干扰,确保测试结果的准确性。- 日志文件会长期保存所有记录,你可以运行几天之后,统计故障的频率和时间段,判断是不是Raspberry Pi硬件老化导致的问题。
备注:内容来源于stack exchange,提问作者Cimm
相关产品推荐
相关产品推荐

