我是python和编程的新手,我无法找到完成我需要的代码的方法。请帮助,请:)
背景:
我将检查多个不同的(linux)环境,所以我想从resolv.conf获取nameserver(ns)和域信息,并将这些值传递给dig。
感谢这个论坛和谷歌我能够获得ns和域名信息,但仍然在努力将信息传递给挖掘。
Python版本是2.7。 Linux是rhel6.x。
问题:
如何使用ns和domain的返回值格式化dig命令并提供一些参数:
dig +search <domain>. axfr @<ns> +noall +answer
来自这些职能部门。
我想要的是什么:
从/et/resolv.conf中读取ns和域。只需要第一个ns (这已经实现)
将ns和域传递给dig(这是我无法弄清楚的部分)。 dig命令是这样的:挖掘+搜索。 axfr @ + noall +回答
修改dig的输出,以便列表如下: host_ip1 host_name1 host_ip2 host_name2 ....
会很好 醇>
就是这样。 我知道有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
任何帮助都将受到高度赞赏!