在python中获取IP地址的所有FQDN

时间:2019-03-05 16:51:51

标签: python python-3.x sockets dnspython

我遇到以下问题:实际上,我正在为ovirt服务器制作一个脚本,以自动删除虚拟机,包括从DNS中注销它们。但是对于某些非常特定的虚拟机,一个IP地址示例有多个FQDN:

$(document).ready(function() {
$(routePlan_form).submit(function(e){
  e.preventDefault();
  $.ajax({
    type: "POST",
    url: "/pages/voyages/passageplans/createroute.php",
    dataType: 'json',
    data: $("#routePlan_form").serialize(),
    'success': function(data) {
      if(data['success']) {
        //refresh the table
        $("#table").load(location.href + " #table");
        //reset the form
        $('#routePlan_form').trigger("reset");
        //scroll to the top
        window.scrollTo({ top: 0, behavior: 'smooth' });
        //send the user a success message
        resetToastPosition();
        $.toast({
          heading: 'Success',
          text: 'Waypoint added successfully',
          textColor: 'white',
          showHideTransition: 'slide',
          hideAfter : 7000,
          icon: 'success',
          loaderBg: '#f96868',
          position: 'top-center'
        })
      } else {
         var i;
         for (i = 0; i < data['message'].length; i++) {
         //scroll to the top
         window.scrollTo({ top: 0, behavior: 'smooth' });
         this.error(this.xhr, data['message'][i]);
         $("#"+data['fields'][i]).addClass("form-control-danger");
         $('<label id="'+data['fields'][i]+'"-error" class="badge badge-danger" for="'+data['fields'][i]+'">'+data['message'][i]+'</label>').insertAfter("#"+data['fields'][i]);
         }
      }
    },
    'error': function(jqXHR, textStatus, errorThrown) {
      //send the user a success message
      resetToastPosition();
      $.toast({
        heading: 'Error',
        text: '' + textStatus,
        textColor: 'white',
        showHideTransition: 'slide',
        hideAfter : 10000,
        icon: 'error',
        bgColor: '#f96868',
        position: 'top-center',
        loaderBg: '#405189'
      })
    }
  })
})
});

我尝试使用python中的套接字来执行此操作,但它只返回一个答案,我也尝试过使用dnspython进行python操作,但失败了。 目标是计算dns服务器上A型记录的数量 任何人有想法做这样的事情?

2 个答案:

答案 0 :(得分:1)

那是完全不可能的。如果心情合适,我可以在DNS服务器中添加指向您IP地址的条目。通常,您无法找到它(某些协议(例如http(s))中的一些提示除外)。

答案 1 :(得分:0)

鉴于上述格式的区域文件,您可以执行以下操作...

from collections import defaultdict

zone_file = """myfirstfqdn.com IN A 10.10.10.10
mysecondfqdn.com IN A 10.10.10.10"""

# Build mapping for lookups
ip_fqdn_mapping = defaultdict(list)

for record in zone_file.split("\n"):
    fqdn, record_class, record_type, ip_address = record.split()
    ip_fqdn_mapping[ip_address].append(fqdn)

# Lookup
ip_address_to_lookup = "10.10.10.10"
fqdns = ip_fqdn_mapping[ip_address_to_lookup]

print(fqdns)

注意:可以像这样使用套接字-Python lookup hostname from IP with 1 second timeout

但这确实要求您查询的DNS服务器已正确配置PTR反向记录。

https://www.cloudns.net/wiki/article/40/