在 python 中使用 dig 命令

     2023-02-22     189

关键词:

【中文标题】在 python 中使用 dig 命令【英文标题】:Using the dig command in python 【发布时间】:2011-07-11 06:30:10 【问题描述】:

只是一个警告,我的 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 模块,但我发现文档真的很混乱。

任何正确方向的指针将不胜感激。

问候

克里斯。

【问题讨论】:

【参考方案1】:

很可能从 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

【讨论】:

澄清一下,#basic 查询只是检查您的 isp 报告的内容,而 #set dns 服务器检查名称服务器报告的内容吗? 基本查询使用您的默认 /etc/resolv.conf 名称服务器,而 Set 版本允许您指定要调用的名称服务器。 应该是dnspython而不是dynpython。但是 SO 中的 6 个字符限制使我无法编辑上面的答案。 您需要安装pypi.org/project/dnspython3 才能使用python 3【参考方案2】:

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.

【讨论】:

我在尝试运行时遇到了一个相当大的错误:Traceback(最近一次调用最后一次):文件“C:/Users/Chris/Documents/work/python/cname.py” ,第 5 行,在 proc=subprocess.Popen(shlex.split(cmd),stdout=subprocess.PIPE) 文件“C:\Python26\lib\subprocess.py”,第 623 行,在 _init_ errread, errwrite) File "C:\Python26\lib\subprocess.py", line 833, in _execute_child startupinfo) WindowsError: [Error 2] The system cannot find the file specified 错误:[Error 2] The system cannot find the file specified 暗示(或至少暗示)您没有名为 dig 的可执行文件。 啊,我刚在工作中尝试过,效果很好,一定是和我的家用桌面有关。谢谢。【参考方案3】:

找到 2 个额外的 Python 库,用于类似 dig 的命令。 它们都被称为 pydig

1)leonsmith/pydig

安装:pip install pydig

用法:

>>> import pydig
>>> pydig.query('example.com', 'A')
['93.184.216.34']
>>> pydig.query('www.github.com', 'CNAME')
['github.com.']
>>> pydig.query('example.com', 'NS')
['a.iana-servers.net.', 'b.iana-servers.net.']

2)shuque/pydig.

安装:(以 root 身份)python3 setup.py install

用法:

   pydig www.example.com
   pydig www.example.com A
   pydig www.example.com A IN
   pydig @10.0.1.2 example.com MX
   pydig @dns1.example.com _blah._tcp.foo.example.com SRV
   pydig @192.168.42.6 +dnssec +norecurse blah.example.com NAPTR
   pydig @dns2.example.com -6 +hex www.example.com
   pydig @192.168.72.3 +walk secure.example.com

【讨论】:

dig命令详解

...诊断,因为它灵活性好,易用、输出清晰。通常情况下dig使用命令行参数,但它也可以按批处理模式从文件读取搜索请求。不同于早期版本,dig的BIND9实现允许从命令行发出多个查询,除非被告知请求特定域名服务器,dig将尝试/... 查看详情

dig命令(转载)

dig命令使用大全(linux上域名查询)可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程,dig命令可以帮助我们学习DNS的原理,配置,以及其查询过程。以前使用dig仅仅是查询一下A记录或者MX记录,现在发现其功能真的不... 查看详情

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

】如何在dns-python中进行dns查询作为dig(带有附加记录部分)?【英文标题】:Howmakednsqueriesindns-pythonasdig(withadditionalrecordssection)?【发布时间】:2013-07-1421:51:21【问题描述】:我尝试使用dnspython并希望使用ANY类型查询获取所有记录... 查看详情

debian下使用dig/nslookup

debian默认没有安装dig/nslookup命令,使用下面命令安装:apt-getinstalldnsutilsred-hat系列使用:yuminstallbind-utilshost命令显示域名对应的ip地址:nslookup查看域名对应的的ip:(图示通过/etc/resolv.conf配置文件中的211.162.77.77返回的结果)dig命令... 查看详情

dig命令不能使用(-bash:dig:commandnotfound)

解决方式:直接使用yum进行安装:yum-yinstallbind-utils  查看详情

dig命令

...名服务器;-b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;-P:指定域名... 查看详情

dig这个命令到底怎吗用

...ig目录加到系统环境变量path中。安装完毕,可以试试了,使用命令如下: 查看详情

dig (DNS Lookup) 在 Windows 上指定 DNS 服务器

...布时间】:2016-08-0502:43:14【问题描述】:在Linux中,我会使用dig指定DNS服务器为127.0.0.1,并使用以下命令:diggoogle.com@127.0.0.1我为windows(chocoinstallbind-toolsonly)安装了绑定工具。 查看详情

dig命令使用

1.简单查询#digwww.guoxh.cn  2.按记录类型查询,默认为A记录#digwww.guoxh.cncname#digwww.guoxh.cnmx#digwww.guoxh.cnAAAA3.指定DNS服务器#digguoxh.cnMX8.8.8.84.从根域逐步查询的过程:+trace#digwww.guoxh.cn+trace    查看详情

dig常用命令

Dig是域信息搜索器的简称(DomainInformationGroper),使用dig命令可以执行查询域名相关的任务。###1.理解dig的输出结果$digchenrongrong.info1;<<>>DiG9.9.5-3ubuntu0.1-Ubuntu<<>>chenrongrong.info2;;globaloptions:+cmd3;;Got 查看详情

dig命令详解

...的工具。由于一直缺失Digmanpage文档,本文就权当一个dig使用向导吧。  Dig的源码是ISCBIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内,但是在linux系统下,它通常是某个包的一部分,在Gentoo下是bind-tools... 查看详情

使用dig查询dns解析

...说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手。如果是在debian下的话,只要装上dnsutils这个包就可以使用dig命令了。最基本的使用方式就是digwww.oolec.com即查询域名的A记录,查询的dns服务器... 查看详情

dig命令结果解析

参考技术Adig命令,可以用来分析dns解析过程。最简单的使用方式:digyourdomain。例如使用digwww.baidu.com,会输出如下信息:dig返回内容的第一部分,主要包括dig的版本信息,以及本次命令执行结果的摘要。>opcode:QUERY,表示执行... 查看详情

带有“+nssearch”选项的“dig”命令啥都不返回是啥意思?

...意思?【发布时间】:2015-09-0114:53:01【问题描述】:当我使用+nssearch选项在www.googl 查看详情

windows系统下安装dig命令

...似,但比nslookup功能更强大。Windows只有nslookup,我们通过使用http://members.shaw.ca/nicholas.fong/dig/改项目提供的Windows版dig,下面说一下步骤:1、下载dig包,下载地址是:http://mem 查看详情

我可以使用 dig 同时查找 NS 和 A

】我可以使用dig同时查找NS和A【英文标题】:CanIlookupNSandAatthesametimeusingdig【发布时间】:2011-05-2404:28:19【问题描述】:是否可以使用单个dig命令查找域的A(IP地址)和NS(名称服务器)?我可以使用diggoogle.comA+short或diggoogle.comNS+... 查看详情

使用 dig 搜索 SPF 记录 [关闭]

】使用dig搜索SPF记录[关闭]【英文标题】:UsingdigtosearchforSPFrecords[closed]【发布时间】:2011-05-0405:36:16【问题描述】:我正在使用安装在我的机器上的dig来搜索特定域的SPF记录。有没有办法在特定的DNS服务器中搜索SPF记录?例如,... 查看详情

dig用法

...说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手。如果是在debian下的话,只要装上dnsutils这个包就可以使用dig命令了。最基本的使用方式就是digwww.oolec.com即查询域名的A记录,查询的dns服务器... 查看详情