如何使用Python或Bash删除动态DNS记录?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Python或Bash删除动态DNS记录?相关的知识,希望对你有一定的参考价值。

python更新中的以下代码

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条目。

答案

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')
另一答案

dns.update.Update的delete方法总是将名称作为第一个参数。其他参数可以是:

  • 没有
  • rdataset ...
  • 哭......
  • rdtype,[string ...]

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

要从域_acme-challenge.example.com中删除内容为“Hello World”的特定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"

以上是关于如何使用Python或Bash删除动态DNS记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 dns-python 中进行 dns 查询作为 dig(带有附加记录部分)?

python3如何使用py3dns?

EXCEL如何自动动态统计记录条数。

有没有办法删除部分history的记录,例如删除几天的操作记录,或删除最后的几个操作记录?

shell脚本实现批量解析域名IP地址(支持多DNS)

如何动态刷新 ListView?