添加新实例时,我在DNS记录中有重复项。我的目标是使用“nsupdate”能够在找到新的实例IP时通过IP删除A记录。这就是我做的。但是,在运行此脚本时,它没有删除任何重复项。什么是最好的散步?
domain=${domainname}
nodename=(hostname | awk -F. '{print $1}')
local_ip=$(ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
nslookup ${local_ip} | grep SERVFAIL
if [[ $? < 0 ]] ; then
echo "Record already exists"
echo -e "update ${local_ip} IN A"
else
echo "creating forward Record: ${codename}.${domain}"
echo -e "update add ${nodename}.${domain} 3600 A ${local_ip}\nsend" | nsupdate -g
fi
答案 0 :(得分:0)
看起来你有几个问题
Grep不会返回小于0的值,因此您的更新代码永远不会运行。即使它确实运行了,你也不会将该命令回显给nsupdate,因此你的记录仍然不会改变。此外,您的代码中还有一些拼写错误
domain=${domainname}
nodename=(hostname | awk -F. '{print $1}')
local_ip=$(ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
if nslookup ${local_ip} | grep SERVFAIL; then
echo "creating forward Record: ${nodename}.${domain}"
echo -e "update add ${nodename}.${domain} 3600 A ${local_ip}\nsend" | nsupdate -g
else
echo "Record already exists"
echo -e "update ${local_ip} IN A" | nsupdate -g
fi
我从未亲自使用过nsupdate,但我假设您打算以与“添加”相同的方式向其发送更新命令。