2009-08-07 12 views
7

比方說,我有我的IP尾礦進入日誌列表:通標準輸入到Unix主機或挖命令

1.1.1.1 
1.1.1.2 
1.1.1.3 

我想輕鬆地解決他們的主機名。我希望能夠

tail -f access.log | host - 

由於主機不能理解stdin的輸入,所以會失敗。無需編寫靜態文件或回退到perl/python/etc,最簡單的方法是什麼?

回答

19

使用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

4

您還可以使用內置read

tail -f access.log | while read line; do host $line; done 
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. 

使用:

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

注意,-i選項xargs意味着-L 1選項。

要首先獲取主人的IP,請參見this answer

相關問題