I had to gather a list of IP addresses from a list of hostnames, this is what I came up with:
#!/bin/bash
Hosts='host1 host2 host3 host4 host5 host6 host7'
for h in $Hosts
do
echo "$h : " $(ping -c 1 $h | egrep -o -m 1 '\([0-9]+\.[^\(\r\n]*\)') done
Is there a more efficient way to do this?
If you mean the latency gets you down, you can do them all in parallel with GNU Parallel:
The
-a hosts
assumes you have the hostnames in a file calledhosts
.hosts:
Output:
Or, if you don't want a file of hostnames, you can use your loop:
Alternatively, have a look in the
arp
cache...