当存在多个dns记录时,使用dnspython删除特定dns记录

当存在多个dns记录时,使用dnspython删除特定dns记录,dns,dnspython,Dns,Dnspython,考虑dns服务器中的以下记录: ;; ANSWER SECTION: test.example.com 3600 IN TXT "line1" test.example.com 3600 IN TXT "line2" 是否可以删除其中一条记录并保留另一条记录 执行删除操作时,请执行以下操作: name = 'test.example.com.' datatype = dns.rdatatype.from_text("TXT") rdata = dns

考虑dns服务器中的以下记录:

;; ANSWER SECTION:
test.example.com        3600  IN  TXT   "line1"
test.example.com        3600  IN  TXT   "line2"
是否可以删除其中一条记录并保留另一条记录

执行删除操作时,请执行以下操作:

name = 'test.example.com.'
datatype = dns.rdatatype.from_text("TXT")
rdata = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line1")
update.present(name, rdata)
update.delete(name, rdata)
我得到一个NXRRSET(8)响应

使用以下命令删除时:

name = 'test.example.com.'
datatype = dns.rdatatype.from_text("TXT")
update.present(name, datatype)
update.delete(name, datatype)
然后删除两个TXT记录(如预期)

我的示例是针对TXT记录的,但对于其他数据类型(如A和PTR)也有同样的问题。删除同一名称和类型的多条记录中的一条似乎不起作用

有什么建议吗?或者这是不可能的

更新

使用nsupdate cli工具时,这似乎是可能的。当我发送以下命令时,仅删除2个条目中的1个:

$ nsupdate -v -k example.com.key
server ns.example.com
nupdate delete test.example.com. TXT line1
send

由于它正在为dns更新工作,我将在dnspython github页面上看到一个问题

问题似乎在于当前条款。由于存在2条记录,且update.present仅包含1条记录,因此NXRRSET将失败。 当省略prsent条款时,删除适用于:

name = 'test.example.com.'
datatype = dns.rdatatype.from_text("TXT")
rdata = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line1")
update.delete(name, rdata)

使用nsupdate进行更多测试后,溶液变得清晰。当使用当前的prereq时,我只需将它们全部添加,这样preq就满足了。以下代码使用当前且仅删除“line1”txt记录:

name = 'test.example.com.'
datatype = dns.rdatatype.from_text("TXT")
rdata = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line1")
rdata2 = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line2")
update.present(name, rdata)
update.present(name, rdata2)
update.delete(name, rdata)

您需要全部检索它们,然后将它们全部删除并设置希望保留的内容。@PatrickMevzek这正是我所担心的:-)当然是可行的,但需要更多的编码。如果通过动态dns更新进行查看,这将非常方便。我们称之为RRSets:记录是一个集合,即无序集合。因此,你不能从中挑选一个。