Import initial
Ajout de l'encodage darcs-hash:20040411094726-d1718-2078aded0314027d2f80833d4af6f97a34b82674.gz
This commit is contained in:
parent
2a712f54b4
commit
244275b5a6
1 changed files with 108 additions and 0 deletions
108
if-traffic
Executable file
108
if-traffic
Executable file
|
@ -0,0 +1,108 @@
|
||||||
|
#!/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)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue