使用dig with python列出所有主机

时间:2017-03-16 07:02:16

标签: python linux dns dig

我是python和编程的新手,我无法找到完成我需要的代码的方法。请帮助,请:)

背景:

我将检查多个不同的(linux)环境,所以我想从resolv.conf获取nameserver(ns)和域信息,并将这些值传递给dig。

感谢这个论坛和谷歌我能够获得ns和域名信息,但仍然在努力将信息传递给挖掘。

Python版本是2.7。 Linux是rhel6.x。

问题:

如何使用ns和domain的返回值格式化dig命令并提供一些参数:

dig +search <domain>. axfr @<ns> +noall +answer 

来自这些职能部门。

我想要的是什么:

  1. 从/et/resolv.conf中读取ns和域。只需要第一个ns (这已经实现)

  2. 将ns和域传递给dig(这是我无法弄清楚的部分)。 dig命令是这样的:挖掘+搜索。 axfr @ + noall +回答

  3. 修改dig的输出,以便列表如下: host_ip1 host_name1 host_ip2 host_name2 ....

  4. 如果输出是基于IP

    排序的,那么
  5. 会很好

    就是这样。 我知道有dns模块可以做同样的事情,但它们不适合我,因为它们不可用。

    到目前为止,这就是我所拥有的:

    # -*- coding: utf-8 -*-
    
    ### Functions start ###
    
    def get_ns():
        with open("/etc/resolv.conf","r") as readFile:
            #print [line.split(" ")[1].strip() for line in readFile.readlines() if line.startswith("nameserver")][0]
            x = [line.split(" ")[1].strip() for line in readFile.readlines() if line.startswith("nameserver")][0]
        readFile.close()
        return x
    
    
    def get_domain():
        with open("/etc/resolv.conf","r") as readFile:
            #print [line.split(" ")[1].strip() for line in readFile.readlines() if line.startswith("search")][0]
            y = [line.split(" ")[1].strip() for line in readFile.readlines() if line.startswith("search")][0]
        readFile.close()
        return y
    
    ### Functions end ###
    
    # just to test all is working:
    ns = get_ns()
    
    # to get the dig command:
    domain = get_domain()
    domain1 = domain + '.'
    ns1 = '@' + ns
    print ns1
    print domain1
    
    list = os.system("dig +search " + domain1 + " axfr " + ns1 + " +noall +answer")
    print list
    

    任何帮助都将受到高度赞赏!

0 个答案:

没有答案