用于解析区域文件的 UNIX 脚本(这是最好的代码吗?)

Ste*_*eve 1 unix dns shell zones

发现以下内容:http://mike.murraynet.net/2009/08/23/parsing-the-verisign-zone-file-with-os-x/

\n\n

unix-masters 可以看一下它,看看它是否是在区域文件中收集唯一域名的最佳方法吗?

\n\n

对于 .NET 域:\ngrep \xe2\x80\x9c^[a-zA-Z0-9-]+ NS 。\xe2\x80\x9d net.zone|sed \xe2\x80\x9cs/NS 。//\xe2\x80\x9d|uniq >> netdomains.txt

\n\n

对于 .COM 域:\ngrep \xe2\x80\x9c^[a-zA-Z0-9-]+ NS 。\xe2\x80\x9d com.zone|sed \xe2\x80\x9cs/NS 。//\xe2\x80\x9d|uniq >> comdomains.txt

\n\n

对于 .EDU 域:\ngrep \xe2\x80\x9c^[a-zA-Z0-9-]+ NS 。\xe2\x80\x9d edu.zone|sed \xe2\x80\x9cs/NS 。//\xe2\x80\x9d|uniq >> edudomains.txt

\n

Aln*_*tak 5

就我个人而言,我会named-checkzone在进一步处理之前规范化区域文件的格式:

% named-checkzone -i none -s full -D com. com.zone | \
  perl -ane 'print $F[0]."\n" if $F[3] eq "NS"' | \
  uniq
Run Code Online (Sandbox Code Playgroud)

无可否认,命令行更长,但它避免了对潜在脆弱的正则表达式匹配的需要。保证输出的第四个字段中named-checkconf包含资源记录类型 ( NS),第一个字段中包含整个域名。

FWIW,named-checkzone还对区域文件输出进行排序,以确保uniq正常工作。