繁体   English   中英

使用awk从dig -x的输出中获取IP地址和名称

[英]using awk to get IP address and name from output of dig -x

只是尝试创建一个bash脚本,它将获取文件中的IP列表然后对每个文件运行'dig -x',然后使用awk只获取它返回的IP和主机名并将其打入新文件。

所以IP列表是hosts.txt,到目前为止我有:

#!/bin/bash
IPLIST="./hosts.txt"

for IP in $( cat $IPLIST ); do
dig -x $IP | awk 'match($0, /192.168.*/) 
{print substr($0, RSTART, RLENGTH)}'

这很适合从dig输出中获取IP地址,但我不太确定如何获取第二个搜索项然后吐出来,所以它基本上是:

192.168.1.5 == hostname.domain.com

dig命令的原始输出是:

dig -x 192.168.1.5
<<>> DiG 9.8.3-P1 <<>> -x 192.168.1.5
global options: +cmd
Got answer:
->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 22854
flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

QUESTION SECTION: 
5.1.168.192.in-addr.arpa.   IN  PTR

AUTHORITY SECTION:
168.192.in-addr.arpa.   300 IN  SOA hostname.domain.com.     
hostmaster.domain.com. 1117231 10800 3600 2419200 300

Query time: 3 msec
SERVER: 10.168.1.20#53(10.168.1.20)
WHEN: Mon Dec  5 13:38:13 2016
MSG SIZE  rcvd: 118

任何人都可以告诉我如何调整这个,以便我可以使用我在同一行上的主机名的IP格式化输出?

没有必要使用解析此输出,因为您可以使用dig +short来获取输出中的主机名。

你的脚本可以只是:

#!/bin/bash

iplist="./hosts.txt"

while read -r ip; do
   printf "%s == %s\n" "$ip" "$(dig +short -x $ip)"
done < "$iplist"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM