一个脚本,用于在同一行上显示 IP 和 ns[1,2].*



我把所有我想dig +trace -x的IP都放在一个名为'ips'的文件中。

我只想查看 IP 的 ns1(和/或)ns2 记录,并将 IP 和 ns1 或 ns2 记录输出在同一行上,如下所示:

1 - $IP - $NS
2 - $IP - $NS
etc.
现在,我

只有一个脚本,我称之为"digdug",看起来像这样......

for i in `cat ips`
do
dig +trace -x $i | tail -n7
done

然后我能够通过运行看到它正在挖掘的 IP:bash -x digdug

但是,我真正需要的是一行上的 IP 和 ns 记录,然后是列表中的下一个 IP,下一行是 ns 记录。然后是下一个,依此类推。

任何帮助将不胜感激!

bash 4 中的另一种解决方案:

while read ip; do
    while read ns; do
       echo -e "$ipt$ns";
    done < <(dig +trace -x $ip | grep -i "ns[12]")
done < ips

我更喜欢使用while TEST; do CMD; done < file,因为它没有分叉子壳。

< <(cmd)用于函数替换。与<重定向一样,bash 不会创建子外壳。

例如,这是谷歌IP的结果(173.164.67.9[1-5]):

173.194.67.91   194.173.in-addr.arpa.   86400   IN      NS      NS1.GOOGLE.COM.
173.194.67.91   194.173.in-addr.arpa.   86400   IN      NS      NS2.GOOGLE.COM.
173.194.67.92   194.173.in-addr.arpa.   86400   IN      NS      NS2.GOOGLE.COM.
173.194.67.92   194.173.in-addr.arpa.   86400   IN      NS      NS1.GOOGLE.COM.
173.194.67.92   67.194.173.in-addr.arpa. 60     IN      SOA     ns1.google.com. dns-admin.google.com. 1497777 21600 3600 1209600 10800
173.194.67.93   194.173.in-addr.arpa.   86400   IN      NS      NS2.GOOGLE.COM.
173.194.67.93   194.173.in-addr.arpa.   86400   IN      NS      NS1.GOOGLE.COM.
173.194.67.94   194.173.in-addr.arpa.   86400   IN      NS      NS2.GOOGLE.COM.
173.194.67.94   194.173.in-addr.arpa.   86400   IN      NS      NS1.GOOGLE.COM.
173.194.67.95   194.173.in-addr.arpa.   86400   IN      NS      NS1.GOOGLE.COM.
173.194.67.95   194.173.in-addr.arpa.   86400   IN      NS      NS2.GOOGLE.COM.

希望这会有所帮助

也许是这样的?

for ip in `cat ips`; do
  ns=`dig +trace -x $ip | tail -n7 | awk '/NS/ {print $NF}'`
  echo "$ip - $ns" | tr 'n' ' '
  echo ""
done

相关内容

  • 没有找到相关文章

最新更新