0

考虑绑定 dns 区域文件的格式:

zone "mydomain.com" {
    type slave;
    file "db.mydomain";
    masters {
            192.168.5.15;
    };
};

...

对 conf 文件中的其他区域重复多次。

我需要在脚本中发现有关 zone.conf 文件的一些详细信息。

我知道我正在寻找的域,所以我可以正则表达式为'^zone“mydomain.com”'

但是我需要发现在我正在查看的区域名称之后首先出现的文件行。

我还想在 master 列表中发现 ip 地址。

我们的配置只有一个主 ip,所以我不必担心多个 ip。

想法赞赏。

4

3 回答 3

1

sed可用于隔离 dns 文件的右侧部分,然后在模式匹配后打印下一行:

# sed -n '/"mydomain.com"/,/^};$/{/^zone "mydomain.com"/{n;p}}' dnsfile
   type slave;
# sed -n '/"mydomain.com"/,/^};$/{/masters/{n;p}}' dnsfile
        192.168.5.15;
于 2012-09-17T19:39:59.317 回答
0

这里的一种方法是使用 sed 首先输出您感兴趣的区域块,然后只获取您想要的行。这可能类似于以下内容:

sed -n '/^zone "mydomain.com"/,/^};/p' zone.conf | sed -n -e '2p' -e '/[0-9]/p'

2p将仅打印第二行(区域名称后的第一行),并且/[0-9]/p仅打印包含数字(IP 地址)的行。

于 2012-09-17T20:07:03.337 回答
0

要获得带有修剪 IP 的下一行:

awk -F';' '/^ *masters/ { getline; sub(/^ */, "", $1); print $0 }' file

输出

192.168.5.15

获取区域线:

awk -F';' '/^zone "mydomain.com"/ { getline; sub(/^ */, "", $1); print $0}' file

输出

192.168.5.15
于 2012-09-17T20:58:40.767 回答