2017-01-09 4 views
1

私はドメインのデフォルトネームサーバを変更し、そのAレコードを取得しようとしています!私は次のコードを使用しようとしましたが、問題は、IPアドレスをネームサーバーとして使用するとすべて動作しますが、 "ns1.google.com"などのネームサーバー名を使用したときにコードを実行できず例外が発生したことです。任意の考え(私はここからのコードを使用:Set specific DNS server using dns.resolver (pythondns)を)?別の名前のサーバを使用したクエリ

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 

私は、次の疲れがあります

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 

そして、ここでは、私が得たものである:

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

どのような例外がありますか?常に完全なエラーメッセージを入れてください。多くの有用な情報があります。 – furas

+1

dns.resolverはどこから来ますか? –

+0

@furas質問を更新しました! – Alex

答えて

2

dnspythonでは、 nameserversインスタンス変数はIPアドレスのリストを取得し、ドメイン名は取得しないため、そのエラーが発生します。 ns1.google.comのアドレスを個別に照会し、後続の照会にそのアドレスを使用する必要があります。もちろん、その最初のクエリをどこに作成するのかという疑問があります。そのためには、システムリゾルバを使ってみることができます。

関連する問題