2013-08-02 82 views
0

我正在嘗試編寫一個腳本,它將採用BIND區域文件,抓取所有A記錄,格式爲host ip。我已經完成了grep -w 'A' "$A_ZONE"|awk '{print $1,$4}'|sort -V,跳過IN A部分。現在,我需要從我擁有的所有反向區域中提取PTR記錄。這些由/ 24子網分組,所以如果我有10.0.0.1的PTR記錄,它將在0.0.10.in-addr.arpa.zone文件中,如10 IN PTR host.domain.tld。由於看起來有點複雜,我不確定如何很好地提取IP,所以它將採用我提取的第一個文件的格式,即host ip複雜的BIND區域文件操作

有什麼建議嗎?

回答

1

您可以使用下面的命令:

egrep '^[0-9]+' 0.0.10.in-addr.arpa.zone | \ 
    perl -p -e 's/^(\d+).*\s(\S+)\s*$/$2 10.0.0.$1/' 

輸出:

host.domain.tld。 10.0.0.10

它會查詢以數字開頭的所有記錄,並匹配數字和主機名並將其反向。 IP地址隨後與主機名一起構建。

請注意,在我顯示的命令中,子網在正則表達式中是硬編碼的,但是您可以應用類似的策略將其從文件名中提取出來插入正則表達式。

您可能還想考慮通過named-compilezone運行您的區域文件,以確保它們採用適用於腳本的規範格式。

+0

非常感謝! –