Question

Let's say I have a list of IPs coming into a log that I'm tailing:

1.1.1.1
1.1.1.2
1.1.1.3 

I'd like to easily resolve them to host names. I'd like to be able to

tail -f access.log | host - 

Which fails as host doesn't understand input from stdin in this way. What's the easiest way to do with without having to write a static file or fallback to perl/python/etc.?

Was it helpful?

Solution

Use xargs -l:

tail -f access.log | xargs -l host

OTHER TIPS

You could also use the read builtin:

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

In the commands below, replace cat with tail -f, etc. if needed.

Using 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.

Using dig:

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

Note that the -i option to xargs implies the -L 1 option.

To first get the IPs of one's host, see this answer.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top