2017-01-09 5 views
1

Ich werde den Standard-Nameserver einer Domain ändern und dann seine A-Datensätze bekommen! Ich habe versucht, den folgenden Code zu verwenden, aber das Problem ist, dass, wenn ich die IP-Adresse als Nameserver benutze alles funktioniert, aber wenn ich Nameservernamen wie "ns1.google.com" verwendet habe, konnte ich den Code nicht ausführen und bekam eine Ausnahme. Jeder Gedanke (Ich habe den Code von hier: Set specific DNS server using dns.resolver (pythondns))?Abfrage mit anderen Nameserver

def NsLookupSpecificNS(domain): 
    my_resolver = dns.resolver.Resolver() 

    # 8.8.8.8 is Google's public DNS server 
    my_resolver.nameservers = ['216.239.38.10'] 

    answer = my_resolver.query('google.com', 'A') 
    try: 
     for rdata in answer: 
      print rdata 
    except dns.resolver.NoAnswer: 
      pass 

Ich habe müde folgendes:

def NsLookupSpecificNS(domain): 
    my_resolver = dns.resolver.Resolver() 

    # 8.8.8.8 is Google's public DNS server 
    my_resolver.nameservers = ['ns1.google.com'] 

    answer = my_resolver.query('google.com', 'A') 
    try: 
     for rdata in answer: 
      print rdata 
    except dns.resolver.NoAnswer: 
      pass 

Und hier ist, was ich habe:

Traceback (most recent call last): 
    File "C:\Users\My Documents\LiClipse Workspace\DNS\Lookup.py", line 49, in <module> 
    NsLookupSpecificNS('google.com') 
    File "C:\Users\My Documents\LiClipse Workspace\DNS\Lookup.py", line 33, in NsLookupSpecificNS 
    answer = my_resolver.query('google.com', 'A') 
    File "C:\Python27\lib\site-packages\dns\resolver.py", line 962, in query 
    source_port=source_port) 
    File "C:\Python27\lib\site-packages\dns\query.py", line 242, in udp 
    if _addresses_equal(af, from_address, destination) or \ 
    File "C:\Python27\lib\site-packages\dns\query.py", line 169, in _addresses_equal 
    n2 = dns.inet.inet_pton(af, a2[0]) 
    File "C:\Python27\lib\site-packages\dns\inet.py", line 51, in inet_pton 
    return dns.ipv4.inet_aton(text) 
    File "C:\Python27\lib\site-packages\dns\ipv4.py", line 48, in inet_aton 
    raise dns.exception.SyntaxError 
dns.exception.SyntaxError: Text input is malformed. 
+1

Welche Ausnahme? Stellen Sie immer die volle Fehlermeldung in Frage. Es gibt viele nützliche Informationen. – furas

+1

Woher kommt dns.resolver? –

+0

@furas Ich habe die Frage aktualisiert! – Alex

Antwort

2

In dnspython, Die Nameserver-Instanzvariable nimmt eine Liste von IP-Adressen und nicht Domänennamen, und deshalb erhalten Sie diesen Fehler. Sie müssen die Adresse von ns1.google.com separat abfragen und diese Adresse (oder Adressen) für die nachfolgende Abfrage verwenden. Das wirft natürlich die Frage auf, wo Sie diese erste Anfrage stellen. Dafür können Sie versuchen, den Systemresolver zu verwenden.

Verwandte Themen