0

bind dns ゾーン ファイルの形式を考えてみましょう。

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

...

conf ファイル内の他のゾーンに対してさらに数回繰り返します。

スクリプトで zone.conf ファイルに関する詳細を調べる必要があります。

探しているドメインがわかっているので、「^zone "mydomain.com"」のような正規表現を使用できます

しかし、私が見ているゾーン名の後に最初に出現するファイル行を見つける必要があります。

また、マスター リストで IP アドレスを検出したいと考えています。

私たちの構成にはマスター IP が 1 つしかないため、複数の IP について心配する必要はありません。

アイデアを歓迎します。

4

3 に答える 3

1

seddns ファイルの右側のセクションを分離し、パターンが一致した後に次の行を出力するために使用できます。

# 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

トリミングされた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 に答える
0

ここでの 1 つのアプローチは、最初に sed を使用して関心のあるゾーン ブロックを出力し、次に必要な行だけを取得することです。これは次のようになります。

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

2p2 行目 (ゾーン名の後の最初の行)/[0-9]/pのみを出力し、数字 (IP アドレス) を含む行のみを出力します。

于 2012-09-17T20:07:03.337 に答える