2015-05-24 5 views
0

Я пытаюсь запросить обратный поиск в dnspython. К сожалению, функция from_address() не позволяет мне передавать IP по переменной. Любые идеи почему?Query обратный поиск dns с dnspython

#!/usr/bin/env python 

import dns.resolver,dns.reversename 

with open("test", "r") as ips: 
    for ip in ips: 
     ip = str(ip) 
     n = dns.reversename.from_address(ip) 
     print str(dns.resolver.query(n,"PTR")[0]) 

Я новичок в python; было бы здорово, если бы кто-нибудь мог помочь!

+0

Ваш код работает для меня с жестко запрограммированным списком IP-адресов. Вы уверены, что содержимое файла - это то, что вы думаете? – DeepSpace

+0

IP-адреса содержатся в файле, перегруженном. Когда я печатаю один вручную, он отлично работает. Однако, что-то должно быть не так с файлом. Нужно ли специальное кодирование? Является ли это признаком текста? – Simon

ответ

1

Я очень сомневаюсь, что вы все еще работаем над этим, но если вы распечатайте каждый IP вы поймете, есть новая строка \ п в каждом ф, который dns.reversename.from_address() не нравится:

192.168.1.1 

192.168.1.2 

192.168.1.3 

Это вызывает исключение:

dns.exception.SyntaxError: Text input is malformed. 

Вы можете легко изменить строку:

ip = str(ip) 

к:

ip = str(ip).strip() 

и она будет вырезать все пробелы (что не должно быть ни в списке хорошо сформированных IP-адресов оставив вас с этим:

192.168.1.1 
192.168.1.2 
192.168.1.3 

Если вы испытывали такое же форматирование текста исключение, и ваши IP-адреса хорошо сформированы, это должно решить вашу проблему. Извините, я опоздал на 2 года, я наткнулся на это Googling на dns.reversename.from_address(). Если ваш список IP-адресов плохо отформатирован, вы можете использовать что-то вроде ippy, чтобы отфильтровать ваши плохие.