
Ajout de l'encodage darcs-hash:20040411094726-d1718-2078aded0314027d2f80833d4af6f97a34b82674.gz
108 lines
2.9 KiB
Python
Executable file
108 lines
2.9 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- coding: iso-8859-15 -*-
|
|
# Hey, c'est du -*- python-*-, ça !
|
|
#
|
|
# Ecrit mi-février par Chep pour les besoins locaux...
|
|
#
|
|
|
|
import string,shelve,pickle,sys
|
|
|
|
def tuple_to_dico(tup) :
|
|
"construit un dictionnaire à partir du tuple d'une interface"
|
|
fields={ 0:'in', 1:'inp', 2:'ierr', 3:'idrop', 4:'ififo', 5:'iframe', 6:'icompressed',
|
|
7:'imulticast', 8:'out', 9:'outp', 10:'oerr', 11:'odrop', 12:'ofifo', 13:'cols',
|
|
14:'carrier', 15:'ocompressed' }
|
|
dic = {}
|
|
for n in fields.keys() :
|
|
dic[ fields[n] ] = data[ n ]
|
|
if dic['outp']: dic['colr'] = long((100 * dic['cols']) / dic['outp'])
|
|
else: dic['colr'] = 0L
|
|
|
|
dic['npi'] = dic['ierr']+dic['idrop'] + dic['ififo'] + dic['iframe'] +dic['icompressed']
|
|
dic['npo'] = dic['oerr']+dic['odrop']+dic['ofifo']+dic['carrier']+dic['ocompressed']
|
|
|
|
dic['mnpi'] = 1000 * dic['npi']
|
|
dic['mnpo'] = 1000 * dic['npo']
|
|
dic['unpi'] = 1000 * dic['mnpi']
|
|
dic['unpo'] = 1000 * dic['mnpo']
|
|
|
|
if dic['inp']: dic['npir'] = long((100 * dic['npi']) / dic['inp'])
|
|
else:
|
|
if dic['ierr']: dic['npir'] = 99L # erreurs et pas de paquets entrants !
|
|
else: dic['npir'] = 0L
|
|
if dic['outp']: dic['npor'] = long((100 * dic['npo']) / dic['outp'])
|
|
else:
|
|
if dic['oerr']: dic['npor'] = 99L
|
|
else: dic['npor'] = 0L
|
|
|
|
# totaux dans les deux sens (tnp = total nasty pkts,tgp = total good pkts)
|
|
dic['tnp'] = dic['npi'] + dic['npo']
|
|
dic['tgp'] = dic['inp'] + dic['outp']
|
|
return dic
|
|
|
|
|
|
if len(sys.argv) < 2:
|
|
sys.stderr.write("""usage: %s ethN [var1] [var2] [long ifname]\n
|
|
var1 and var2 can be :
|
|
in: incoming bytes
|
|
out: outgoing bytes
|
|
cols: collisions
|
|
inp: incoming packets
|
|
outp: outgoing packets
|
|
colr: collision ratio, in percent (cols / outp)
|
|
npi : incoming 'nasty' packets
|
|
npo : outgoing 'nasty' packets
|
|
mnpi : 1000 * npi
|
|
mnpo : 1000 * npo
|
|
npir: incoming 'nasty' packet ratio
|
|
npor: outgoing 'nasty' packet ratio
|
|
|
|
default var1 and var2 are in,out.
|
|
Result is to be fed to MRTG.
|
|
""" % (sys.argv[0]))
|
|
sys.exit(0)
|
|
|
|
iface = sys.argv[1]
|
|
ifname = iface
|
|
|
|
if len(sys.argv) > 2:
|
|
var1 = sys.argv[2]
|
|
if len(sys.argv) > 3:
|
|
var2 = sys.argv[3]
|
|
if len(sys.argv) > 4:
|
|
ifname = sys.argv[4]
|
|
else: var2 = 'out'
|
|
else:
|
|
var1 = 'in'
|
|
var2 = 'out'
|
|
|
|
fd = open('/proc/net/dev','r')
|
|
sl = fd.readlines()
|
|
fd.close()
|
|
|
|
Ifaces = {}
|
|
for s in sl:
|
|
ln = string.split(s,':')
|
|
if len(ln) < 2: continue
|
|
data = string.split(ln[1])
|
|
try :
|
|
n = long(data[1])
|
|
except : continue
|
|
for k in range(len(data)):
|
|
data[k] = long(data[k])
|
|
Ifaces[string.strip(ln[0])] = tuple_to_dico(data)
|
|
|
|
i = Ifaces[iface]
|
|
|
|
# python1.5 fait str(1234L) =="1234L", il faut enlever le L..
|
|
ver=sys.version[0]
|
|
if ver[0]=='1' :
|
|
s1 = str( i[var1])[:-1]
|
|
s2 = str( i[var2])[:-1]
|
|
else :
|
|
s1 = str( i[var1])
|
|
s2 = str( i[var2])
|
|
|
|
print "%s\n%s\n\n%s" % (s1, s2 ,ifname)
|
|
|
|
|