【问题标题】:nslookup/dig/drill commands on a file that contains websites to add ip addresses在包含网站的文件上执行 nslookup/dig/drill 命令以添加 IP 地址
【发布时间】:2020-07-09 09:41:10
【问题描述】:

更新:仍对使用nslookup without parallel、dig 或drill 的解决方案开放

我需要编写一个脚本来扫描每行包含网页地址的文件,并使用nslookup 命令将与名称对应的IP 地址添加到这些行中。脚本现在看起来像这样:

#!/usr/bin/

while read ip
do

   nslookup "$ip" | 
   awk '/Name:/{val=$NF;flag=1;next} /Address:/ &&
        flag{print val,$NF;val=""}' | 
   sed -n 'p;n'

done < is8.input

输入文件包含以下网站:

www.edu.ro
vega.unitbv.ro

www.wikipedia.org

最终输出应如下所示:

www.edu.ro 193.169.21.181
vega.unitbv.ro 193.254.231.35

www.wikipedia.org 91.198.174.192

我对脚本当前状态的主要问题是它从nslookup 中获取名称(这对www.edu.ro 有好处),而不是在可用时使用别名。我的输出如下所示:

www.edu.ro 193.169.21.181
etc.unitbv.ro 193.254.231.35

dyna.wikimedia.org 91.198.174.192

我正在考虑为别名实现if-else,但我不知道如何对当前命令执行操作。如果有人对如何格式化 nslookup 以像给定的输出一样显示它有更好的理解,也可以更改脚本。

【问题讨论】:

  • 顺便说一句:修复你的shebang。

标签: shell awk sed nslookup dig


【解决方案1】:

极简的解决方法准答案。这是使用 GNU parallel、host(解析工作比 nslookup 少)和 sed 的脚本的单行替换:

parallel "host {} 2> /dev/null | 
          sed -n '/ has address /{s/.* /'{}' /p;q}'" < is8.input

...或使用nslookup 以增加GNU sed 复杂性为代价。

parallel "nslookup {} 2> /dev/null | 
          sed -n '/^A/{s/.* /'{}' /;T;p;q;}'"  < is8.input

...或使用xargs:

xargs -I '{}' sh -c \
         "nslookup {}  2> /dev/null | 
          sed -n '/^A/{s/.* /'{}' /;T;p;q;}'"  < is8.input

其中任何一个的输出:

www.edu.ro 193.169.21.181
vega.unitbv.ro 193.254.231.35
www.wikipedia.org 208.80.154.224

【讨论】:

  • Potong's sed & host one-liner 是上述更好更简单的版本。
  • 非常好的命令,但是否可以在没有并行的情况下解决它? @agc
【解决方案2】:

这可能对你有用(GNU sed 和主机):

sed '/\S/{s#.*#host & | sed -n "/ has address/{s///p;q}"#e}' file

对于所有非空行:在提供的主机名上调用 host 命令并将结果通过管道传递给 sed 的另一个调用,该调用会删除文本并在第一个结果后退出。

【讨论】:

  • 这样更好。没想过使用 eval 代替 parallel。
  • @agc 我完全赞成使用 GNU 并行,但在这种情况下,OP 似乎想要保留空行,而 sed 似乎更适合这种情况。
【解决方案3】:

将完整的 nslookup 行替换为:

echo "$IP $(dig +short "$IP" | grep -m 1 -E '^[0-9.]{7,15}$')"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 2017-03-18
    • 2015-01-10
    • 2021-05-03
    • 2017-08-31
    • 2014-04-25
    • 1970-01-01
    相关资源
    最近更新 更多