只是预警,我的python技能几乎不存在,但我正在努力学习。
我在周末通过我们的DNS控制面板进行了一些更改,大约58个CNAMES(只是更改目的地)
而不是检查每个单独记录的变化是否已经存在,我想知道是否有办法在python中编写每个CNAME的挖掘列表?
我使用的dig命令就是这样的
dig @ns1.netnames.net www.rac.co.uk CNAME
我希望看到rac-secure.gslb2.rac.co.uk
返回。
我尝试过类似的事情:
import os
os.system( 'dig<exampledomain.com>'CNAME )
但这似乎不起作用(因为我提到我的python技能缺乏),我是在正确的道路上,还是我应该使用像dnspython这样的东西?我之前使用过dnspython模块,有很多来自堆栈溢出社区的帮助,但我发现文档真的很混乱。
任何指向正确方向的人都会非常感激。
此致
克里斯。
答案 0 :(得分:43)
很有可能从python中调用 dig ,它可能会让你的工作只能使用python库。看一下dnspython,这可能会更容易 - 而且你不必解析输出格式。
import socket
import dns.resolver
# Basic query
for rdata in dns.resolver.query('www.yahoo.com', 'CNAME') :
print rdata.target
# Set the DNS Server
resolver = dns.resolver.Resolver()
resolver.nameservers=[socket.gethostbyname('ns1.cisco.com')]
for rdata in resolver.query('www.yahoo.com', 'CNAME') :
print rdata.target
答案 1 :(得分:4)
os.system
已弃用。使用subprocess.Popen:
import subprocess
import shlex
cmd='dig @ns1.netnames.net www.rac.co.uk +short'
# cmd='dig @ns1.netnames.net www.rac.co.uk CNAME'
proc=subprocess.Popen(shlex.split(cmd),stdout=subprocess.PIPE)
out,err=proc.communicate()
print(out)
# rac-secure.gslb.norwichunion.com.