bash使用nslookup在文件上用主机名替换ip

时间:2014-02-17 17:05:33

标签: bash nslookup

我有一个输出此信息的临时文件

1.2.3.4 34
1.2.3.5 23
1.2.3.6 22

第一列是ip地址,第二列是与数据库同时连接,我需要输出第一列不是作为IP地址而是作为hostame,并保留第二列的信息

期望的输出

hostname1 34
hostname2 23
hostname3 22

提前感谢...

3 个答案:

答案 0 :(得分:2)

这样的事情可能是:

#!/bin/bash
while read ip n
do
   # Uncomment following to use /etc/hosts
   # name=$(awk -v ip=$ip '$1 ~ ip{print $2}' /etc/hosts)
   # Uncomment following to use nslookup
   # name=$(nslookup $ip| grep "name ="|sed 's/.*=//')
   # Uncomment following line to use dig (thanks to Charles Duffy)
   # name=$(dig +short -x $ip)
   echo $name $n
done < file

答案 1 :(得分:0)

不完全确定你想要达到的目标,但这确实会得到“所需的输出”

awk 'BEGIN {x = 1} {printf "hostname%s %s\n", x, $2; x += 1}' tempfile

答案 2 :(得分:0)

来自logresolve的{​​{1}}怎么样?它会检测看起来像IP地址的内容,并将其替换为已解析的主机名:

apache2-utils