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