(返されたデータを把握する方法に答えるため)
TXT、CNAME、SOAレコードも同様の方法で取得できますが、DNS応答オブジェクトに応じて正しい属性を取得する必要があります。
組み込みのpythondir()を使用することは、友だちであり、DNS応答オブジェクトに存在する属性を把握する1つの方法です。APIドキュメントが利用できない場合に便利です。
適切な属性を見つけるには、forループを一時的に次のように変更します。
for data in answer:
print dir(data)
print data
もう1つのより迅速な方法は、dnspythonのAPIドキュメントを確認することです。これらのページには、返された各オブジェクトの属性が一覧表示されます。
最後に、ライブラリがPythonであるかどうか、またはそうでない場合は、Cコードが利用可能かどうかをソースで確認できます。
(そしてあなたの質問に答えるために:)
TXT、CNAME、SOAクエリの例を次に示します。
TXT
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.txtbase.TXTBase-class.html#section-InstanceVariables
answers = dns.resolver.query('google.com', 'TXT')
print ' query qname:', answers.qname, ' num ans.', len(answers)
for rdata in answers:
for txt_string in rdata.strings:
print ' TXT:', txt_string
CNAME
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.ANY.CNAME.CNAME-class.html
answers = dns.resolver.query('mail.google.com', 'CNAME')
print ' query qname:', answers.qname, ' num ans.', len(answers)
for rdata in answers:
print ' cname target address:', rdata.target
SOA
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.ANY.SOA.SOA-class.html#section-InstanceVariables
answers = dns.resolver.query('google.com', 'SOA')
print 'query qname:', answers.qname, ' num ans.', len(answers)
for rdata in answers:
print ' serial: %s tech: %s' % (rdata.serial, rdata.rname)
print ' refresh: %s retry: %s' % (rdata.refresh, rdata.retry)
print ' expire: %s minimum: %s' % (rdata.expire, rdata.minimum)
print ' mname: %s' % (rdata.mname)