All pastes #2050476 Raw Edit

Anonymous

public text v1 · immutable
#2050476 ·published 2011-04-25 14:36 UTC
rendered paste body
#! /bin/bash

set -o posix
set -o nounset
shopt -s extglob # allow extended pattern matching operators 

# Executables
# ~~~~~~~~~~~
# So can change to suit OS variant
nslookup='/usr/bin/nslookup'
sort='/usr/bin/sort'

#--------------------------
# Name: test_servers
# Purpose: tests response times of list of servers
# $1 - list of servers
# $2 - results heading
#--------------------------
function test_servers {

	local oIFS out secs server

	out=''
	for server in $1
	do
		echo -n '.'
		# DEVELOPMENT NOTE: -timeout=5 in command below does not seem to be effective; default 15 timeout operates
		secs="$(/usr/local/bin/gtime -f '%e' $nslookup '-timeout=5' 'www.google.com' $server 2>&1 1>/dev/null)"
		out="$out
	$secs $server"
	done
	
	out="$(echo "$out" | $sort --general-numeric-sort)"
	
	echo
	echo "$2"
	oIFS="$IFS"
	IFS='
	'
	for buf in $out
	do
		IFS="$oIFS"
		IP_address="${buf#* }"
		response_time="${buf% *}"
		if [[ ${response_time%.*} -lt 5 ]]; then
			response_time="$response_time seconds"
		else
			response_time='Timed out'
		fi
		printf '%16s  %s\n' "$IP_address" "$response_time"
	done


	return 0

}  # end of function test_servers

BSNL_servers='
61.1.96.69
61.1.96.71
61.1.96.72
218.248.240.23
218.248.240.135
218.248.240.208
218.248.240.180
218.248.255.145
'

#echo 'DEBUG: setting small BSNL DNS server list'
#BSNL_servers='
#218.248.240.23
#218.248.240.208
#'

OpenDNS_servers='
208.67.222.222
208.67.220.220
'

test_servers "$BSNL_servers" 'Known BSNL DNS servers with query response times'
test_servers "$OpenDNS_servers" 'Known OpenDNS servers with query response times'

echo '
Here'"'"'s the current /etc/resolv.conf:'
cat '/etc/resolv.conf'
exit 0