添加新实例时,我的 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
最佳答案
看来您有几个问题
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,但我假设您打算以与“添加”相同的方式向其发送更新命令。
关于linux - DNS A记录和PTR记录删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238158/