Awk NSLookup脚本每周更新一次主机文件。

Awk NSLookup脚本每周更新一次主机文件。,awk,sed,grep,hosts,nslookup,Awk,Sed,Grep,Hosts,Nslookup,第一次贴海报,如果我找不到以前的主题,我很抱歉。基本上,我的任务是创建一个脚本,对50个域名执行NSLookup,格式化结果并将其传递给hosts文件。我以后会担心检查和覆盖重复条目 例如: 输入:nslookup www.cbc.ca 结果: 名称:a1849.gc.akamai.net 地址:184.50.238.64、184.50.238.89 别名:www.cbc.ca、www.cbc.ca.edgesuite.net 最终输出:#184.50.238.64 www.cbc.ca a18

第一次贴海报,如果我找不到以前的主题,我很抱歉。基本上,我的任务是创建一个脚本,对50个域名执行NSLookup,格式化结果并将其传递给hosts文件。我以后会担心检查和覆盖重复条目

例如:

输入:nslookup www.cbc.ca

结果: 名称:a1849.gc.akamai.net 地址:184.50.238.64、184.50.238.89 别名:www.cbc.ca、www.cbc.ca.edgesuite.net

最终输出:#184.50.238.64 www.cbc.ca a1849.gc.akamai.net

我认为这在grep、awk和sed中是可能的,但一直在摆弄开关,没有得到正确的组合(主要是因为我在正则表达式方面不是最有经验的)。我也偏爱vbs、batch和cmd建议

提前感谢您的时间和努力!:)


只有一个地址,不会解决多个相同的名称,如nslookup google.com…

使用
host
而不是
nslookup
可能会使解析更容易一些,如果您的系统有它的话。。。它通常只生成一行输出,而不是
nslookup
创建的多行报告。嘿,我很欣赏反馈,后来改用主机vs nslookup(我更喜欢dig+short,但我不支持),因为正如您所提到的,它更容易解析。谢谢你的建议!
nslookup $NAME | awk -v name="$NAME" 'BEGIN{hit=0; addr=""; alias=""} /answer:/{hit=1} /^Address:/{if (hit == 1 && "" == addr) addr=$2} /^Name:/{alias=alias " " $2} END{print(addr, name, alias)}'