7

假设我有一个 IP 列表进入我正在跟踪的日志:

1.1.1.1
1.1.1.2
1.1.1.3 

我想轻松地将它们解析为主机名。我希望能够

tail -f access.log | host - 

由于主机无法以这种方式理解来自标准输入的输入,因此失败。无需编写静态文件或回退到 perl/python/etc 的最简单方法是什么?

4

4 回答 4

24

使用xargs -l

tail -f access.log | xargs -l host
于 2009-08-07T20:23:36.980 回答
5

您还可以使用read内置:

tail -f access.log | while read line; do host $line; done
于 2009-08-07T20:24:20.177 回答
3

在下面的命令中,如果需要,请替换cattail -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,请参阅此答案

于 2014-12-18T22:30:54.340 回答
0

在 bash 你可以这样做:

stdout | (dig -f <(cat))

示例程序:

(
cat <<EOF
asdf.com
ibm.com
microsoft.com
nonexisting.domain
EOF
) | (dig -f <(cat))

这样你只调用一次“挖掘”。

于 2020-04-13T08:12:05.523 回答