2012-01-03 7 views
1

私はちょっとした問題があります。頭がうまくいかないようです。私はサブドメインのシリアル番号を照会しようとしています。私は答えのエラーthoを得ているが、それは根本的なドメインでうまくいくでしょう。あなただけを見せたらもっと簡単です:dnspythonサブドメインのシリアル番号を調べる方法は?

import socket, dns.resolver 
host = "google.com" 
querytype = "SOA" 
cachingserverslist = {'server1': '4.1.1.1', 'server2': '4.2.2.2'} 

for cachingservername, cachingserver in sorted(cachingserverslist.iteritems()) : 
    query = dns.resolver.Resolver() 
    query.nameservers=[socket.gethostbyname(cachingserver)] 
    query.Timeout = 2.0 

for a in query.query(host , querytype) : 
     print a.serial 

これは私に予想される結果をもたらします。私が理解できないことは、ホスト変数をサブドメインに変更するか、無回答でwwwがエラーになることです。以下はipythonのセッションで、私の意味を示しています:

In [1]: import socket, dns.resolver 
In [2]: host = "google.com" 
In [3]: querytype = "SOA" 
In [4]: cachingserverslist = {'server1': '4.1.1.1', 'server2': '4.2.2.2'} 
In [5]: for cachingservername, cachingserver in sorted(cachingserverslist.iteritems())  : 
...:    query = dns.resolver.Resolver() 
...:   query.nameservers=[socket.gethostbyname(cachingserver)] 
...:   query.Timeout = 2.0 
...: 

In [6]: for a in query.query(host , querytype) : 
    ...:    print a.serial 
    ...: 
2011121901 

In [7]: 
In [8]: host = "www.google.com" 
In [9]: for a in query.query(host , querytype) : 
     print a.serial 
    ....:  
    ....:  
--------------------------------------------------------------------------- 
NoAnswer         Traceback (most recent call last) 

/var/www/pydns/<ipython console> in <module>() 

/usr/local/lib/python2.6/dist-packages/dns/resolver.pyc in query(self, qname, rdtype,  rdclass, tcp, source, raise_on_no_answer) 
707    raise NXDOMAIN 
708   answer = Answer(qname, rdtype, rdclass, response, 
--> 709       raise_on_no_answer) 
710   if self.cache: 
711    self.cache.put((qname, rdtype, rdclass), answer) 

/usr/local/lib/python2.6/dist-packages/dns/resolver.pyc in __init__(self, qname, rdtype, rdclass, response, raise_on_no_answer) 
    127      except KeyError: 
    128       if raise_on_no_answer: 
--> 129        raise NoAnswer 
    130     if raise_on_no_answer: 
    131      raise NoAnswer 

    NoAnswer: 

すべての洞察力が最も高く評価されます。ありがとう。

答えて

1

シリアル番号は、SOAの「権限の開始」レコードの属性です。 www.google.comはCNAMEであるため、関連付けられているシリアル番号はありません。

関連する問題