How do I resolve an SRV record in Python?

后端 未结 4 1261
失恋的感觉
失恋的感觉 2020-12-18 00:43

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

相关标签:
4条回答
  • 2020-12-18 00:53

    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}
    
    0 讨论(0)
  • 2020-12-18 01:11

    You could try the dnspython library:

    • http://www.dnspython.org/examples.html
    • http://www.dnspython.org/docs/1.7.1/html/dns.rdtypes.IN.SRV.SRV-class.html
    0 讨论(0)
  • 2020-12-18 01:11

    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.

    0 讨论(0)
  • 2020-12-18 01:13

    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']
    
    0 讨论(0)
提交回复
热议问题