DNS A记录和PTR记录删除

时间:2018-03-12 14:51:16

标签: linux bash scripting dns system-administration

添加新实例时,我在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 

1 个答案:

答案 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,但我假设您打算以与“添加”相同的方式向其发送更新命令。