9

Something which doesn't rely on native libraries would be better.

Sam Mussmann
  • 5,653
  • 2
  • 28
  • 43
Gili Nachum
  • 4,702
  • 2
  • 29
  • 30

4 Answers4

10

You could try the dnspython library:

ars
  • 113,841
  • 22
  • 139
  • 133
8

twisted has an excellent pure-python implementation, see twisted.names sources (especially dns.py). If you can't use all of their code, maybe you can extract and repurpose their Record_SRV class from that file.

Alex Martelli
  • 811,175
  • 162
  • 1,198
  • 1,373
5

Using dnspython:

>>> import dns.resolver
>>> domain='jabberzac.org'
>>> srvInfo = {}
>>> srv_records=dns.resolver.query('_xmpp-client._tcp.'+domain, 'SRV')
>>> for srv in srv_records:
...     srvInfo['weight']   = srv.weight
...     srvInfo['host']     = str(srv.target).rstrip('.')
...     srvInfo['priority'] = srv.priority
...     srvInfo['port']     = srv.port
... 
>>> print srvInfo
{'priority': 0, 'host': 'xmpp.jabberzac.org', 'port': 5222, 'weight': 0}
bstpierre
  • 28,439
  • 14
  • 66
  • 101
CHINTAN VADGAMA
  • 544
  • 5
  • 13
1

Using pydns:

import DNS
DNS.ParseResolvConf()
srv_req = DNS.Request(qtype = 'srv')
srv_result = srv_req.req('_ldap._tcp.example.org')

for result in srv_result.answers:
    if result['typename'] == 'SRV':
        print result['data']
bmaupin
  • 12,667
  • 4
  • 75
  • 88