假设我有一个 IP 列表进入我正在跟踪的日志:
1.1.1.1
1.1.1.2
1.1.1.3
我想轻松地将它们解析为主机名。我希望能够
tail -f access.log | host -
由于主机无法以这种方式理解来自标准输入的输入,因此失败。无需编写静态文件或回退到 perl/python/etc 的最简单方法是什么?
使用xargs -l
:
tail -f access.log | xargs -l host
您还可以使用read内置:
tail -f access.log | while read line; do host $line; done
在下面的命令中,如果需要,请替换cat
为tail -f
等。
使用host
:
$ cat my_ips | xargs -i host {}
1.1.1.1.in-addr.arpa domain name pointer myhost1.mydomain.com.
1.1.1.2.in-addr.arpa domain name pointer myhost2.mydomain.com.
使用dig
:
$ cat my_ips | xargs -i dig -x {} +short
myhost1.mydomain.com.
myhost2.mydomain.com.
请注意,该-i
选项xargs
意味着该-L 1
选项。
要首先获取主机的 IP,请参阅此答案。
在 bash 你可以这样做:
stdout | (dig -f <(cat))
示例程序:
(
cat <<EOF
asdf.com
ibm.com
microsoft.com
nonexisting.domain
EOF
) | (dig -f <(cat))
这样你只调用一次“挖掘”。