rendered paste body#! /usr/bin/python
# ver 1.2
import urllib2
import sys
import time
from optparse import OptionParser
def createOptParser():
parser = OptionParser()
parser.add_option("-s", "--server-number", default=5,
dest="server_number",
help="amount of servers to print, 0 for all")
parser.add_option("-v", "--verbose",
action="store_true", dest="verbose", default=False,
help="be verbose")
return parser
def timeCmd(cmd):
before = time.time();
try:
cmd();
except KeyboardInterrupt, ki:
raise ki
except Exception, e:
print '\tERROR: ', e
return 99999999
return time.time() - before;
def talkToServer(serverUrl):
opener = urllib2.build_opener()
tmp = opener.open(serverUrl).read()
def getFuncToTime(serverUrl):
return lambda : talkToServer(serverUrl)
def cmpPairBySecond(p1, p2):
if p1[1] == p2[1]: return 0
if p1[1] < p2[1]: return -1
return 1
if __name__ == "__main__":
parser = createOptParser()
(options, args) = parser.parse_args()
if len(args) != 1:
parser.print_help()
sys.exit(0)
fl = open(args[0], 'r')
serverToTime = {}
print 'Querying servers, it might take some time '
for ln in fl.readlines():
splitted = ln.split('=')
if splitted[0].strip() != 'Server': continue
serverUrl = splitted[1]
if serverUrl[-1] == '\n': serverUrl = serverUrl[0:-1]
if not options.verbose: print '*',
else: print serverUrl, '...',
#sys.stdout.flush()
serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl))
if options.verbose: print '\t',serverToTime[serverUrl]
items = serverToTime.items()
items.sort(cmpPairBySecond)
numberOfItemsToShow = int(options.server_number)
if numberOfItemsToShow == 0: numberOfItemsToShow = len(items)
if len(items) > 0:
if not options.verbose: print
print '======================================'
print 'Servers sorted by time'
print '======================================'
for i in items[0:numberOfItemsToShow]:
print i[0], ': ', i[1]