2016-12-05 65 views
3

只是試圖讓一個bash腳本,將採取IP的列表中文件,然後運行「挖-x」對每個人,然後用awk輸出IP地址和名稱只獲取IP和主機名,它返回並拍即進入一個新的文件。使用awk來得到的掏-x

所以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)}' 

這種運作良好,獲得自掏輸出的IP地址,但我不太知道如何讓第二搜索字詞,然後吐出了這一點所以基本上:

192.168.1.5 == hostname.domain.com 

自掏命令輸出的原料是:

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輸出?

回答

0

沒有必要使用解析此輸出,因爲您可以使用dig +short來獲取輸出中的主機名。

你的腳本只:

#!/bin/bash 

iplist="./hosts.txt" 

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

這是方式比我更漂亮。 :) 不得不放棄「i」可爲我,因爲我是在Mac和開關不起作用,但它的工作就像一個魅力。謝謝。 – Will

+0

對不起它應該是'-r'但即使是在沒有你的情況需要。 – anubhava