指定dns查询的超时时间

最近在做些打杂的事情,需要对dns做一下健康检查。脚本直接shell写的,以前的同事的方案只是直接检查一下named进程是否存在,存在就是表示OK的,这个策略显然是有问题的,比如进程假死之类的其实是没有办法检查的。然后我就想着改成nslookup或者host命令进行一个查询,检测返回值,由于nslookup的返回值不能体现出查询是否成功,就只有host可以用了。
[bash]
check_dns(){
local domain
local server
domain="www.xxx.com"
server=’127.0.0.1′

host -W1 $domain $server &>/dev/null
error=$?
if [ $error -ne $STATUS_OK ];then
warn "can’t resolve $domain,error."
fi
return $error
}
[/bash]
但是使用host的话,如果DNS服务器hang住了,即便自己设置了每次wait的时间是1s,总的也需要等6s才能完成检查。这个检查的发现时间是太长了,所以改成了使用dig来做。
[bash]
check_dns(){
local domain
local server
domain="www.xxx.com"
server=’127.0.0.1′
dig @$server $domain +time=1 +retry=1 +tries=1 &>/dev/null
error=$?
if [ $error -ne $STATUS_OK ];then
warn "can’t resolve $domain,error."
fi
return $error
[/bash]
这样每次检测的超时时间就只有1s,每次只进行一次查询,重试的最大次数1次。基本能满足需求

此条目发表在OS分类目录。将固定链接加入收藏夹。

发表评论