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:
Post Comments (Atom)
No comments:
Post a Comment