在python中使用dig命令

只是预警,我的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模块(很多)来自堆栈溢出社区的帮助,但我发现文档确实令人困惑。 任何指向正确方向的人都会非常感激。 问候 克里斯。     
已邀请:
很有可能从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
    
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.
    

要回复问题请先登录注册