mirror='www.google.com'
port='80'
iplist=()
for ip in $(dig $mirror A | perl -lane 'print $1 if (/A\s+(.*?)$/)')
do
# Give me a resonable starting point (Using epoch in nano seconds).
a=$(($(date +'%s * 1000 + %-N / 1000000')))
nc -w 2 -z $ip $port &> /dev/null &
b=$(($(date +'%s * 1000 + %-N / 1000000')))
msec=`expr $b - $a`
iplist+=("$msec $ip")
done
# Grab the fastest one..
fastest=$(for a in "${iplist[@]}"; do echo "$a"; done | sort -n | head -1 | awk '{print $2}')
echo $fastest
Monday, June 24, 2013
Find the Fastest Mirror in Bash
I needed a script that would determine the fastest mirror in a list of addresses.
In this example I'm using the mighty 'www.google.com' and port 80 but it's obviously configurable.
I also needed to use nano seconds rather than seconds because all the results (for google) came back in less than 1 second.
It should actually be a bash function but I'll leave that to you, fine reader.
You're welcome!
Subscribe to:
Comments (Atom)