在python中使用dig命令

Chr*_*ong 17 python dns cname dig

只是预警,我的python技能几乎不存在,但我正在努力学习.

我在周末通过我们的DNS控制面板做了一些更改到大约58个CNAMES(只是更改目的地)

而不是检查每个单独记录的变化是否已经存在,我想知道是否有办法在python中编写每个CNAME的挖掘列表?

我使用的dig命令就是这样的

dig @ns1.netnames.net www.rac.co.uk CNAME
Run Code Online (Sandbox Code Playgroud)

我希望看到rac-secure.gslb2.rac.co.uk回来.

我尝试过类似的东西:

import os
os.system( 'dig<exampledomain.com>'CNAME )
Run Code Online (Sandbox Code Playgroud)

但这似乎没有用(因为我提到我的python技能缺乏),我是在正确的道路上,还是我应该使用像dnspython这样的东西?之前我已经使用了dnspython模块(很多)来自堆栈溢出社区的帮助,但我发现文档确实令人困惑.

任何指向正确方向的人都会非常感激.

问候

克里斯.

kob*_*las 46

很有可能从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
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 6

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.
Run Code Online (Sandbox Code Playgroud)