通标准输入到Unix主机或挖命令

问题描述:

比方说,我有我的IP尾矿进入日志列表:通标准输入到Unix主机或挖命令

1.1.1.1 
1.1.1.2 
1.1.1.3 

我想轻松地解决他们的主机名。我希望能够

tail -f access.log | host - 

由于主机不能理解stdin的输入,所以会失败。无需编写静态文件或回退到perl/python/etc,最简单的方法是什么?

使用xargs -l

tail -f access.log | xargs -l host 
+0

这将实际上打嗝,因为主机实际上将运行与 主机1.1.1.1 1.1.1.2 导致DNS无效DNS服务器上查找。设置“-d”\ n'“似乎没有任何帮助。 – tomasz 2009-08-07 20:53:47

+6

使用“xargs -l”(或“xargs -L 1”)确保该命令针对每一行运行。 – 2009-08-07 22:56:54

您还可以使用内置read

tail -f access.log | while read line; do host $line; done 

在下面的命令,如果需要更换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. 

使用:

$ cat my_ips | xargs -i dig -x {} +short 
myhost1.mydomain.com. 
myhost2.mydomain.com. 

注意,-i选项xargs意味着-L 1选项。

要首先获取主人的IP,请参见this answer