2017-07-25 177 views
0

这里是我的简单的代码:为什么dnspython给我这个错误?

print host 
    for rdata in dns.resolver.query(host, 'CNAME') : 
     prod_host = str(rdata.target) 

我拉host出文件。当我运行它,我得到如下:

"www.maizena.es" 
Traceback (most recent call last): 
    File "lexparse.py", line 488, in <module> 
dfs(rules_tree) 
    File "lexparse.py", line 486, in dfs 
dfs(child) 
    File "lexparse.py", line 486, in dfs 
dfs(child) 
    File "lexparse.py", line 471, in dfs 
for rdata in dns.resolver.query(host, 'CNAME') : 
    File "build/bdist.macosx-10.11-intel/egg/dns/resolver.py", line 1132, in query 
    File "build/bdist.macosx-10.11-intel/egg/dns/resolver.py", line 1051, in query 
dns.resolver.NXDOMAIN: None of DNS query names exist: \"www.maizena.es\"., \"www.maizena.es\".masked.domain.com., \"www.maizena.es\".domain.com., \"www.maizena.es\".netarch.domain.com., \"www.maizena.es\".fr.adsvc., \"www.maizena.es\".domainlab.com. 

有什么奇怪的是,当我运行在Python测试REPL似乎按预期方式工作:

bos-mpqpu:config_parse rabdelaz$ python 
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import dns.resolver 
>>> for rdata in dns.resolver.query("www.maizena.es", 'CNAME') : 
...  prod_host = str(rdata.target) 
... 
>>> prod_host 
'sana.kona.unilever.com.edgekey.net.' 

此外,DNS解析从我的命令行工作得很好:

$ dig www.maizena.es 

; <<>> DiG 9.8.3-P1 <<>> www.maizena.es 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15148 
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 

;; QUESTION SECTION: 
;www.maizena.es.   IN A 

;; ANSWER SECTION: 
www.maizena.es.  138 IN CNAME sana.kona.unilever.com.edgekey.net. 
sana.kona.unilever.com.edgekey.net. 154 IN CNAME e10923.x.akamaiedge.net. 
e10923.x.akamaiedge.net. 20 IN A 96.6.167.93 

;; Query time: 73 msec 
;; SERVER: 172.27.112.15#53(172.27.112.15) 
;; WHEN: Tue Jul 25 11:24:11 2017 
;; MSG SIZE rcvd: 130 

任何洞察赞赏。

+0

那些来自你的配置文件的其他域? .fr.adsvc,.netarch.domain.com,domainlab.com等?那些看起来很奇怪。 – captncraig

+0

我*猜*是那些在我的本地DNS解析器,因为我在domain.com VPN。 – Ramy

+0

好的。说得通。是否可能在脚本中查询repl vs中的不同名称服务器? – captncraig

回答

1

这里的问题是字符串实际上嵌入了双引号。我需要将这些消除。

注意:\"www.maizena.es\"在错误信息中。

我修改了我的脚本是这样的:

print repr(host) 
    for rdata in dns.resolver.query(host[1:-1], 'CNAME') : 
     prod_host = str(rdata.target) 

使用print repr()帮助识别外来双引号。

相关问题