mob*_*obu 9 dnspython python-3.x
考虑这种情况:使用nsupdate我可以使用以下方法从A记录中删除IP:
update delete test-record.mydomain.com 60 A 172.16.1.4
这是我使用dnspython的简单实现,其中bind_host是我们的绑定服务器,domain_name是"mydomain.com".和sub_domain是"test-record",ip是"172.16.1.4".
def delete_dns_record(self, bind_host, domain_name, sub_domain, ip):
    update = dns.update.Update(domain_name)
    update.delete(sub_domain, '60', 'A', ip)
    response = dns.query.tcp(update, bind_host, timeout=10)
    return response
运行函数将抛出以下错误:
Traceback (most recent call last):
File "dns_magic/check.py", line 136, in <module>
dnstest()
File "dns_magic/check.py", line 134, in dnstest
print(hc.delete_dns_record('1.2.3.4', 'mydomain.com.', 'test-record', '172.16.1.4' ))
File "dns_magic/check.py", line 106, in delete_dns_record
update.delete(sub_domain, '60', 'A', ip)
File "dns_magic/lib/python3.6/site-packages/dns/update.py", line 160, in delete
rdtype = dns.rdatatype.from_text(rdtype)
File "dns_magic/lib/python3.6/site-packages/dns/rdatatype.py", line 214, in from_text
raise UnknownRdatatype
dns.rdatatype.UnknownRdatatype: DNS resource record type is unknown.
任何想法如何继续?我也对使用Python的替代方法持开放态度.
更新工作解决方案:
def delete_dns_record(bind_host, domain_name, sub_domain, ip):
    update = dns.update.Update(domain_name)
    update.delete(sub_domain, dns.rdatatype.A, ip)
    response = dns.query.tcp(update, bind_host, timeout=10)
    return response
您的参数是Update.delete()错误的 - 第二个参数应该是Rdataset、Rdata或 rdtype (或者Rdatatype是字符串)。
由于您传递一个字符串作为第二个参数,因此它被视为 rdtype - 因此,您应该传递 作为'A'第二个参数。如果您在 rdtype 之后传递更多参数,则传递 IP 应该可以,但我不能 100% 确定还允许什么;我猜通过 TTL 是行不通的。
| 归档时间: | 
 | 
| 查看次数: | 133 次 | 
| 最近记录: |