Você pode usar dig +noall +answer -x <IP>
para procurar um endereço IP.
Para fazer um loop em um arquivo que contém uma lista de endereços IP:
while read ip; do dig +noall +answer -x $ip; done < ips.txt
Ou canalize a saída do seu comando de contagem. Desta vez, obtemos a contagem e os endereços IP separadamente e depois os imprimimos em uma linha:
cat access.log | awk '{print $1}' | sort |
uniq -c | sort -n | tail -n10 |
while read count ip; do printf "%d " $count; printf "%s " $ip; dig +noall +answer -x $ip; done
Exemplo (desculpe pelo UUOC):
cat test | while read count ip; do printf "%d " $count; printf "%s " $ip; dig +noall +answer -x $ip; done
20 8.8.8.8 8.8.8.8.in-addr.arpa. 52767 IN PTR google-public-dns-a.google.com.
22 8.8.4.4 4.4.8.8.in-addr.arpa. 61369 IN PTR google-public-dns-b.google.com.
Você pode canalizar ainda mais a saída de dig
no awk para obter apenas o nome do host:
cat test | while read count ip; do printf "%d " $count; printf "%s " $ip; echo $(dig +noall +answer -x $ip | awk '{ print $(NF) }'); done
20 8.8.8.8 google-public-dns-a.google.com.
22 8.8.4.4 google-public-dns-b.google.com.