linux - DNS A记录和PTR记录删除

标签 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 

最佳答案

看来您有几个问题

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/

相关文章:

linux - kmalloc( ,GFP_KERNEL) 分配会失败吗?

linux - 应该为 Docker 中的 TeamCity 代理提供什么服务器 URL?

linux - 如何将消息写入 FIFO 并同时从另一个进程读取它

linux - 如何在 bash 脚本中使用空格来 grep 字符串变量

php - 在apache服务器上通过php执行bash文件

bash - 我如何检查用户是否存在于 bash 脚本中,如果提供的用户存在,我将如何重新询问新用户?

ubuntu - 如何在 virtualenv 中重新运行 'postactivate' 脚本?

linux - 如何一次取消保护跨越多个页面的内存区域?

linux - Bash 变量始终为空

python - 如果在后台执行脚本,如何在 Blender Python 上使用旋转运算符?