鱼C论坛

 找回密码
 立即注册
查看: 5546|回复: 14

[已解决]Python查询DNS问题深夜求救,周末没能搞掂

[复制链接]
发表于 2016-8-7 23:31:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C:\Users\Administrator\Desktop
最佳答案
2016-8-11 11:14:19
liangmanxing 发表于 2016-8-11 11:13
这个我明白,现在问题应该是代码上的问题,我用以前的脚本跑,是可以查出dns的A记录

那就对比一下二者逻辑的区别
超时问题一般来说跟网路有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-7 23:39:56 | 显示全部楼层
我用Python写了一个脚本,遍历文件中的域名,然后查询它的dns的A记录,但是老是报错,实在没有办法,贴上代码求指教逻辑是否出错,,,,
#!/usr/bin/python

# -*- coding: UTF-8 -*-

import dns.resolver

f1=open("456.txt","r")

for domain in f1:
                       
        A1=dns.resolver.query(domain, 'A')
               
                for i in A1.response.answer:
                       
                        for j in i.items:
                               
                                if j.rdtype == 1:
                                       
                                        A=j.address
                                       
                                        print A
                                else:
               
                                        pass
       

f1.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 23:42:20 | 显示全部楼层
错误的信息我看了半天说NDS信息不存在,,,,可是我将里面的域名放在一个列表里面,遍历列表,输出的却是成功的,,,,报错信息如下,如果鱼友们有什么想法可以一起说说,,,
[root@host-192-168-4-127 69dns]# ./dns-chaxun.py
cqtonglu.cn
Traceback (most recent call last):
  File "./dns-chaxun.py", line 7, in <module>
    A1=dns.resolver.query(domain, 'A')
  File "/usrb/python2.6/site-packages/dns/resolver.py", line 1068, in query
    raise_on_no_answer, source_port)
  File "/usrb/python2.6/site-packages/dns/resolver.py", line 995, in query
    raise NXDOMAIN(qname=qnames_to_try)
dns.resolver.NXDOMAIN: None of DNS query names exist: ['cqtonglu.cn\\010.', 'cqtonglu.cn\\010.openstacklocal.']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-8 08:33:25 | 显示全部楼层
求鱼友们指点迷津哇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-8 11:19:20 | 显示全部楼层
你可以把你从文件里面读取到的内容print出来 和你list里面的内容对比一下,看看有没有什么区别,
该不会是txt文件里面读出来的有 换行符,或者编码格式不一样之类的问题吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-9 17:09:19 | 显示全部楼层
梦里不知身是客 发表于 2016-8-8 11:19
你可以把你从文件里面读取到的内容print出来 和你list里面的内容对比一下,看看有没有什么区别,
该不会是 ...

我往里面加了一句domain=domain.strip()
问题解决了,没有了这个报错
但是又有了新的报错
Traceback (most recent call last):
  File "./555.py", line 7, in <module>
    A1=dns.resolver.query(domain, 'A')
  File "/usr/local/python3/lib/python3.5/site-packages/dns/resolver.py", line 979, in query
    raise_on_no_answer, source_port)
  File "/usr/local/python3/lib/python3.5/site-packages/dns/resolver.py", line 908, in query
    raise NXDOMAIN
dns.resolver.NXDOMAIN
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-9 18:38:44 | 显示全部楼层
我是新手,过来瞧瞧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 09:06:55 | 显示全部楼层
liangmanxing 发表于 2016-8-9 17:09
我往里面加了一句domain=domain.strip()
问题解决了,没有了这个报错
但是又有了新的报错

NXDOMAIN 表示没有这个域名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-11 09:52:04 | 显示全部楼层
hldh214 发表于 2016-8-11 09:06
NXDOMAIN 表示没有这个域名

嗯嗯,昨天刚刚好发现了有一些域名是无效的,您知不知道检查到无效域名除了跳出报这种错误还有没有其他返回数值能在程序中处理错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-11 09:55:16 | 显示全部楼层
hldh214 发表于 2016-8-11 09:06
NXDOMAIN 表示没有这个域名

我尝试使用try的语句解决,但是怎么会报错,,,SyntaxError: 'return' outside function
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import dns.resolver
try:
        A1=dns.resolver.query("www.ztweisheng.com",'A')
except Exception as e:
        print ("dns resolver error:"+str(e))
        return
for i in A1.response.answer:
        for j in i.items:
                if j.rdtype == 1:
                        A=j.address
                        print(A)
                else:
                        pass
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 11:05:26 | 显示全部楼层
liangmanxing 发表于 2016-8-11 09:55
我尝试使用try的语句解决,但是怎么会报错,,,SyntaxError: 'return' outside function
#!/usr/bin/py ...

去掉return
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-11 11:09:29 | 显示全部楼层

嗯嗯,刚刚研究了一下,return应该用在函数里面,我改了一下,但是现在还是不停的输出dns resolver error:The DNS operation timed out after 30.0011069775 seconds
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import dns.resolver
f1=open("789.txt","r")
for domain in f1:
        try:
                A1=dns.resolver.query(domain,'A')
        except Exception,e:
                print ("dns resolver error:"+str(e))
                continue
        for i in A1.response.answer:
                for j in i.items:
                        if j.rdtype == 1:
                                A=j.address
                                print(A)
                        else:
                                pass
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 11:11:55 | 显示全部楼层
liangmanxing 发表于 2016-8-11 11:09
嗯嗯,刚刚研究了一下,return应该用在函数里面,我改了一下,但是现在还是不停的输出dns resolver error ...

这个表示解析 DNS 出错, 超时了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-11 11:13:22 | 显示全部楼层
hldh214 发表于 2016-8-11 11:11
这个表示解析 DNS 出错, 超时了

这个我明白,现在问题应该是代码上的问题,我用以前的脚本跑,是可以查出dns的A记录
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 11:14:19 | 显示全部楼层    本楼为最佳答案   
liangmanxing 发表于 2016-8-11 11:13
这个我明白,现在问题应该是代码上的问题,我用以前的脚本跑,是可以查出dns的A记录

那就对比一下二者逻辑的区别
超时问题一般来说跟网路有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 09:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表