gpt4 book ai didi

python - 用python解析dns配置文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:49 24 4
gpt4 key购买 nike

不确定这个问题是否合适,但无论如何我都会尝试一下。基本上我需要的是解析一个conf文件。

它看起来像这样:

 1. #local-data: "some.dns.url IN MX 192.168.80.45"
2. local-data: "some.other.dns.url IN A 192.168.60.1"
3. local-data: "router.home.somewhere IN A 192.168.20.1"
4. *a linebreak*
5. local-data-ptr: "192.168.80.45 some.dns.url"
6. local-data-ptr: "192.168.60.1 some.other.dns.url"
7. # some other random comment
8. local-data-ptr: "192.168.20.1 router.home.somewhere"

我需要摆脱它的是:地址:第2行上的“some.other.dns.url”“IN”后面是什么:可以是 MX、A 或其他一些。IP:在本例中为 192.168.60.1,但也可以是其他任何值。

我不一定需要完整的脚本。天哪,我什至不需要一个,这不是我在这里发帖的目标。我想知道针对这种情况的最佳方法。大多数时候我倾向于摆脱这样的情况,但这一次似乎有点棘手:

  • 我无法根据线条的大小来判断自己。

  • 我不能根据“点”(.) 作为地址,因为一个可以有 2 个点,另一个可以有 3 个点。

  • 我有部分线路(“IN”)只是令人不安,没有任何用处。

到目前为止我做了什么:

dnsconf = open('theconffile.conf', 'r')
dnsconf = dnsconf.readlines()
x = []
for line in dnsconf:
cont = re.findall('\"(.+?)\"', line)
if len(line) > 1 and line[:1] is not '#':
x.append(cont)
print cont

cont 基本上包含双引号内的内容。例如“MX 192.168.80.45 中的some.dns.url”。

我觉得这是一个好的开始,但我不知道如何继续。我不擅长正则表达式,我觉得我需要的实际上是正则表达式......所以我有点卡在这里。

有人能让我解决这个问题吗?

最佳答案

这会忽略以 # 开头的行,解码以“local-data:”开头的行,并将主机名、DNS 类型和 IP 地址解析为列表:

import re

dnsconf = open('dns.txt', 'rt')

x = []
for line in dnsconf:
cont = re.findall('^local-data:\s+\"(\S+)\s+IN\s+(\S+)\s+(\S+)\"', line)
if cont:
x.append(cont)
print cont

这允许使用\s+ 在字符串中重复空格。

数据的输出是:

[('some.other.dns.url', 'A', '192.168.60.1')]
[('router.home.somewhere', 'A', '192.168.20.1')]

请注意,除非您有理由需要内存中的所有文本,否则无需使用 readlines()。另外,为了 Windows 的鲁棒性,使用文件打开模式“rt”不会对 unixy 系统造成任何损害。

关于python - 用python解析dns配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32051950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com