Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Python by view_tool ( 14 years ago )
def index(request):
import logging
logging.basicConfig(
level = logging.DEBUG,
format = '%(asctime)s %(levelname)s %(message)s',
filename = '/tmp/meshadmin-debug.log',
filemode = 'w'
)
logging.debug('Inicio do debug')
var_debug = ""
if request.method == 'POST' and 'run' in request.POST:
form = ToolsForm(request.POST)
isPing = False
if form.is_valid():
destination = form.cleaned_data['node']
cmd = 'cmd'
if form.cleaned_data['tool'] == 'AVG':
cmd = '/bin/ping -c 5 -q ' + destination.ip
isPing=True
elif form.cleaned_data['tool'] == 'THROUGHPUT':
cmd = '/usr/bin/iperf -c ' + destination.ip
isPing=False
elif form.cleaned_data['tool'] == 'LOSS':
cmd = '/bin/ping -c 100 -q ' + destination.ip
isPing=True
#endif
output = commands.getoutput(cmd)
raw_output = output
#output = output + " : "+cmd
#parsing output
if isPing:
if output.find('100% packet loss') == -1:
output = output.split('\n')
output_packets = output[3]
output_rtt = output[4]
output_packets = output_packets.split(',')
packets_tx = int((output_packets[0].split(' '))[0])
packets_rx = int((output_packets[1].split(' '))[1])
losses = (100.0 - (packets_rx*100.0)/packets_tx)
output_rtt = (output_rtt.split(' ')[3])
output_rtt = output_rtt.split('/')
rtt_min = float(output_rtt[0])
rtt_avg = float(output_rtt[1])
rtt_max = float(output_rtt[2])
rtt_mdev = float(output_rtt[3])
statistic = PingStatistic(node=destination,packets_tx=packets_tx,packets_rx=packets_rx,rtt_min=rtt_min,rtt_max=rtt_max,rtt_avg=rtt_avg,rtt_mdev=rtt_mdev,date=datetime.now())
ret = statistic.save()
#nao eh ping
else:
#processando a saida do outro comando (iperf)
if output.find('connected') != -1:
output = output.split('\n')
output = output[6]
output = output.split(' ')
new_output = []
aux = 0
for o in output:
if len(str(o).strip()) > 0:
new_output.append(o)
aux += 1
#endif
#endif
#intervalo em segundos
aux = 0
for o in new_output:
if str(o).find('sec') != -1:
interval = new_output[aux-1]
break
aux += 1
#interval = output[4]
interval = interval.split('-')
interval = float(interval[1])
aux = 0
transfer = 0
for o in new_output:
isKBTransferUnit = str(o).find('KB') != -1
isMBTransferUnit = str(o).find('MB') != -1
isGBTransferUnit = str(o).find('GB') != -1
isTransferUnit = isKBTransferUnit or isMBTransferUnit or isGBTransferUnit
if isTransferUnit:
transfer = new_output[aux-1]
break
aux += 1
#transfer = output[7]
transfer = float(transfer)
if isKBTransferUnit:
transfer = transfer/1024.0
elif isMBTransferUnit:
transfer = transfer
elif isGBTransferUnit:
transfer = transfer * 1024.0
aux = 0
bandwidth = 0
for o in new_output:
isKBBandwidthUnit = str(o).find('Kbits') != -1
isMBBandwidthUnit = str(o).find('Mbits') != -1
isGBBandwidthUnit = str(o).find('Gbits') != -1
isBandwidthUnit = isKBBandwidthUnit or isMBBandwidthUnit or isGBBandwidthUnit
if isBandwidthUnit:
bandwidth = new_output[aux-1]
break
aux += 1
#bandwidth = output[10]
bandwidth = float(bandwidth)
#bandwidth_unit = output[11]
if isKBBandwidthUnit:
bandwidth = bandwidth/1000.0
elif isMBBandwidthUnit:
bandwidth = bandwidth
elif isGBBandwidthUnit:
bandwidth = bandwidth * 1000.0
#endif
statistic = IperfStatistic(node=destination,interval=interval,transfer=transfer,bandwidth=bandwidth,date=datetime.now())
ret = statistic.save()
output = "node: "+str(destination)+"\ninterval "+str(interval)+"\ntransfer "+str(transfer)+"\nbandwidth "+str(bandwidth)
#endif
return render_to_response('tools/index.html',context_instance=RequestContext(request,
{
'output':raw_output,
'form':ToolsForm(),
'is_popup':True,
'plot':True,
'plotLog':False,
}))
elif request.method == 'POST' and 'log' in request.POST:
form = ToolsForm()
return render_to_response('tools/index.html' , context_instance=RequestContext(request,
{
'form': form,
'is_popup': True,
'plot': False,
'plotLog':True,
}))
else:
form = ToolsForm()
return render_to_response('tools/index.html' , context_instance=RequestContext(request,
{
'form': form,
'is_popup': True,
'plot': False,
'plotLog':False,
}))
Revise this Paste