2013-05-09 45 views
1

下面的代码在python更新如何使用Python或Bash删除动态DNS记录?

import dns.query 
import dns.tsigkeyring 
import dns.update 
import sys 
keyring = dns.tsigkeyring.from_text({'host-example.' : 'XXXXXXXXXXXXXXXXXXXXXX=='}) 

update = dns.update.Update('dyn.test.example', keyring=keyring) 
update.replace('host', 300, 'a', sys.argv[1]) 

response = dns.query.tcp(update, '10.0.0.1') 

,但我无法找出如何删除DNS条目。

+1

使用'delete()'方法。它在文档中,就在'replace()'方法之前。 http://www.dnspython.org/docs/1.10.0/html/ – Barmar 2013-05-09 15:16:16

+0

谢谢,我一定是盲目的!它甚至没有出现在我看到Update类的其他方法! – jnvilo 2013-05-09 18:38:52

回答

3

delete()方法dns.update.Update可用于删除记录。

import dns.query 
import dns.tsigkeyring 
import dns.update 

keyring = dns.tsigkeyring.from_text({'host-example.' : 'XXXXXXXXXXXXXXXXXXXXXX=='}) 
update = dns.update.Update('dyn.test.example', keyring=keyring) 
update.delete('host', 'A') 
response = dns.query.tcp(update, '10.0.0.1') 
+0

谢谢。但是,我未能用此方法删除原始或“@”区域的NX和MX记录。任何指针?谢谢 – 2016-08-29 13:59:29

+0

难道你忘记了删除时特定MX或NS记录的距离和/或内容吗? – Leo 2017-12-27 01:22:11

1

dns.update.Update的删除方法通常采用的名称作为第一个参数。其他参数可以是:

  • 没有
  • rdataset ...
  • RDATA ...
  • rdtype,[串...]

来源:http://www.dnspython.org/docs/1.15.0/

要从内容为“Hello World”的域_acme-challenge.example.com中删除特定的TXT记录:

import dns.resolver 
import dns.tsigkeyring 
import dns.update 
import dns.query 

# Create the rdata object 
txt_record = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.TXT, "Hello World") 

# Initialize a new DNS update object 
update = dns.update.Update('example.com', keyring=keyring) 

# Delete the specific record passing in the rdata object 
update.delete('_acme-challenge', txt_record) 

# Send the request 
reponse = dns.query.udp(update, '10.0.0.1', timeout=10) 

# Check if the TXT record was successfully removed: 
answers = dns.resolver.query('_acme-challenge.example.com', 'TXT') 
txt_records = [txt_record.strings[0] for txt_record in answers] 
if "Hello World" in txt_records: 
    print "TXT record not successfully deleted" 
else: 
    print "TXT record successfully deleted"