[analyse.py] Passage en UTF-8 et on print pas impunément un unicode.
This commit is contained in:
parent
3a7d53a65b
commit
0dfc1e151c
1 changed files with 52 additions and 52 deletions
|
@ -1,5 +1,5 @@
|
||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# -*- coding: iso8859-15 -*-
|
# -*- encoding: utf-8 -*-
|
||||||
|
|
||||||
import socket
|
import socket
|
||||||
import sys, re
|
import sys, re
|
||||||
|
@ -12,22 +12,22 @@ def stats(ip_crans=[], ip_ext=[],
|
||||||
upload_mini=0, show_limit=10, begin_time=24, end_time=0,
|
upload_mini=0, show_limit=10, begin_time=24, end_time=0,
|
||||||
show_download=False,resolve_dns=True):
|
show_download=False,resolve_dns=True):
|
||||||
"""
|
"""
|
||||||
Retourne une chaine de caratères formatée avec le tableau de statistiques
|
Retourne une chaine de caratères formatée avec le tableau de statistiques
|
||||||
d'upload de l'ip fourni
|
d'upload de l'ip fourni
|
||||||
|
|
||||||
ip_crans : ips des machines Cr@ns
|
ip_crans : ips des machines Cr@ns
|
||||||
chaine de caratère si il a qu'une machine
|
chaine de caratère si il a qu'une machine
|
||||||
liste si il y a plusieurs machines
|
liste si il y a plusieurs machines
|
||||||
ip_ext : ips des machines extérieures
|
ip_ext : ips des machines extérieures
|
||||||
chaine de caratère si il a qu'une machine
|
chaine de caratère si il a qu'une machine
|
||||||
liste si il y a plusieurs machines
|
liste si il y a plusieurs machines
|
||||||
show : liste des champs à afficher parmi :
|
show : liste des champs à afficher parmi :
|
||||||
ip_crans, ip_ext, port_crans, port_ext
|
ip_crans, ip_ext, port_crans, port_ext
|
||||||
upload_mini : n'affiche que les lignes avec plus d'upload que la valeur donnée
|
upload_mini : n'affiche que les lignes avec plus d'upload que la valeur donnée
|
||||||
show_limit : nombre max de lignes à afficher
|
show_limit : nombre max de lignes à afficher
|
||||||
begin_time : date de départ d'analyse (en heure avant maintenant)
|
begin_time : date de départ d'analyse (en heure avant maintenant)
|
||||||
end_time : date de fin d'analyse (en heure avant maintenant)
|
end_time : date de fin d'analyse (en heure avant maintenant)
|
||||||
show_download: trie par rapport au download plutôt que l'upload
|
show_download: trie par rapport au download plutôt que l'upload
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if type(ip_crans) == str:
|
if type(ip_crans) == str:
|
||||||
|
@ -125,16 +125,16 @@ def stats(ip_crans=[], ip_ext=[],
|
||||||
results = curseur.fetchall()
|
results = curseur.fetchall()
|
||||||
|
|
||||||
# on transforme tout en chaine
|
# on transforme tout en chaine
|
||||||
results = [ [ str(x) for x in line ] for line in results ]
|
results = [ [ str(x).decode("utf-8") for x in line ] for line in results ]
|
||||||
headers=""
|
headers = u""
|
||||||
try:
|
try:
|
||||||
upload = 0
|
upload = 0
|
||||||
download = 0
|
download = 0
|
||||||
for line in results:
|
for line in results:
|
||||||
upload += int(line[4])
|
upload += int(line[4])
|
||||||
download += int(line[3])
|
download += int(line[3])
|
||||||
headers+=" upload: %sMo\n" % (upload/1024/1024)
|
headers += u" upload: %sMo\n" % (upload/1024/1024)
|
||||||
headers+=" download: %sMo\n" % (download/1024/1024)
|
headers += u" download: %sMo\n" % (download/1024/1024)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -201,23 +201,23 @@ if __name__ == '__main__' :
|
||||||
usage: analyse.py [option]...
|
usage: analyse.py [option]...
|
||||||
Option fait partie des options suivantes :
|
Option fait partie des options suivantes :
|
||||||
-d ou --show-download
|
-d ou --show-download
|
||||||
trier par download plutôt que par upload
|
trier par download plutôt que par upload
|
||||||
--ip-crans [ip]
|
--ip-crans [ip]
|
||||||
ip de la machine crans
|
ip de la machine crans
|
||||||
--ip-ext [ip]
|
--ip-ext [ip]
|
||||||
ip de la machine extérieure
|
ip de la machine extérieure
|
||||||
--show [champ]
|
--show [champ]
|
||||||
champs à afficher (parmi ip_crans, ip_ext, port_crans, port_ext)
|
champs à afficher (parmi ip_crans, ip_ext, port_crans, port_ext)
|
||||||
--upload-mini [n Mo]
|
--upload-mini [n Mo]
|
||||||
upload mini des lignes à afficher
|
upload mini des lignes à afficher
|
||||||
--show-limit [n]
|
--show-limit [n]
|
||||||
nombre maximum de lignes à afficher
|
nombre maximum de lignes à afficher
|
||||||
--begin-time [n heures]
|
--begin-time [n heures]
|
||||||
heure de départ de l'analyse (en heures depuis maintenant)
|
heure de départ de l'analyse (en heures depuis maintenant)
|
||||||
--end-time [n heures]
|
--end-time [n heures]
|
||||||
heure de fin de l'analyse (en heures depuis maintenant)
|
heure de fin de l'analyse (en heures depuis maintenant)
|
||||||
-n
|
-n
|
||||||
Ne pas résoudre les adresses ip
|
Ne pas résoudre les adresses ip
|
||||||
|
|
||||||
Exemple :
|
Exemple :
|
||||||
sudo /usr/scripts/surveillance/analyse.py bilou.crans.org"""
|
sudo /usr/scripts/surveillance/analyse.py bilou.crans.org"""
|
||||||
|
@ -264,10 +264,10 @@ Exemple :
|
||||||
ip_crans.append(socket.gethostbyaddr(value)[2][0])
|
ip_crans.append(socket.gethostbyaddr(value)[2][0])
|
||||||
ip_crans_nom.append(socket.gethostbyaddr(value)[0])
|
ip_crans_nom.append(socket.gethostbyaddr(value)[0])
|
||||||
except socket.gaierror :
|
except socket.gaierror :
|
||||||
print "Hôte %s inconnu" % value
|
print "Hôte %s inconnu" % value
|
||||||
sys.exit(5)
|
sys.exit(5)
|
||||||
except socket.herror:
|
except socket.herror:
|
||||||
print "Hôte %s inconnu" % value
|
print "Hôte %s inconnu" % value
|
||||||
ip_crans.append(value)
|
ip_crans.append(value)
|
||||||
if len(ip_crans_nom)==1:
|
if len(ip_crans_nom)==1:
|
||||||
headers += u' depuis la machine %s\n' % ip_crans_nom[0]
|
headers += u' depuis la machine %s\n' % ip_crans_nom[0]
|
||||||
|
@ -280,13 +280,13 @@ Exemple :
|
||||||
ip_ext_nom = []
|
ip_ext_nom = []
|
||||||
for key,value in opts :
|
for key,value in opts :
|
||||||
if key == '--ip-ext' :
|
if key == '--ip-ext' :
|
||||||
# recherche de l'ip de la machine extérieur
|
# recherche de l'ip de la machine extérieur
|
||||||
try:
|
try:
|
||||||
ip_ext.append(socket.gethostbyaddr(value)[2][0])
|
ip_ext.append(socket.gethostbyaddr(value)[2][0])
|
||||||
except socket.herror:
|
except socket.herror:
|
||||||
ip_ext.append(value)
|
ip_ext.append(value)
|
||||||
except socket.gaierror :
|
except socket.gaierror :
|
||||||
print "Hôte %s inconnu" % value
|
print "Hôte %s inconnu" % value
|
||||||
sys.exit(5)
|
sys.exit(5)
|
||||||
|
|
||||||
# recherche du nom d'hote
|
# recherche du nom d'hote
|
||||||
|
@ -297,9 +297,9 @@ Exemple :
|
||||||
except socket.gaierror :
|
except socket.gaierror :
|
||||||
ip_ext_nom.append(ip_ext[-1])
|
ip_ext_nom.append(ip_ext[-1])
|
||||||
if len(ip_ext_nom)==1:
|
if len(ip_ext_nom)==1:
|
||||||
headers+=u' vers la machine extérieure %s\n' % ip_ext_nom[0]
|
headers += u' vers la machine extérieure %s\n' % ip_ext_nom[0]
|
||||||
elif ip_ext_nom:
|
elif ip_ext_nom:
|
||||||
headers+=u' vers les machines extérieures %s\n' % ', '.join(ip_ext_nom)
|
headers += u' vers les machines extérieures %s\n' % ', '.join(ip_ext_nom)
|
||||||
|
|
||||||
# limite d'affichage
|
# limite d'affichage
|
||||||
####################
|
####################
|
||||||
|
@ -311,7 +311,7 @@ Exemple :
|
||||||
else :
|
else :
|
||||||
headers += u' affichage de %s\n' % ', '.join(show)
|
headers += u' affichage de %s\n' % ', '.join(show)
|
||||||
|
|
||||||
# upload mini à afficher
|
# upload mini à afficher
|
||||||
########################
|
########################
|
||||||
upload_mini = 0
|
upload_mini = 0
|
||||||
for key,value in opts :
|
for key,value in opts :
|
||||||
|
@ -319,11 +319,11 @@ Exemple :
|
||||||
try :
|
try :
|
||||||
upload_mini = int(value)
|
upload_mini = int(value)
|
||||||
except :
|
except :
|
||||||
print 'L\'upload mini doit être un entier (en MO)'
|
print 'L\'upload mini doit être un entier (en MO)'
|
||||||
sys.exit(4)
|
sys.exit(4)
|
||||||
break
|
break
|
||||||
if upload_mini:
|
if upload_mini:
|
||||||
headers+=u' pour les traffics supérieurs à %d Mo\n' % upload_mini
|
headers += u' pour les traffics supérieurs à %d Mo\n' % upload_mini
|
||||||
|
|
||||||
# nombre limite d'enregristrements
|
# nombre limite d'enregristrements
|
||||||
##################################
|
##################################
|
||||||
|
@ -332,17 +332,17 @@ Exemple :
|
||||||
if key == '--show-limit' :
|
if key == '--show-limit' :
|
||||||
try :
|
try :
|
||||||
limit = int(value)
|
limit = int(value)
|
||||||
headers+=u' affichage des %d premiers résultats\n' % limit
|
headers += u' affichage des %d premiers résultats\n' % limit
|
||||||
except :
|
except :
|
||||||
print 'Le nombre limite n\'est pas un entier'
|
print 'Le nombre limite n\'est pas un entier'
|
||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
break
|
break
|
||||||
|
|
||||||
# Résolution dns
|
# Résolution dns
|
||||||
################
|
################
|
||||||
resolve_dns = '-n' not in [key for (key,value) in opts]
|
resolve_dns = '-n' not in [key for (key,value) in opts]
|
||||||
|
|
||||||
# début de l'analyse
|
# début de l'analyse
|
||||||
####################
|
####################
|
||||||
begin_time = 24
|
begin_time = 24
|
||||||
for key,value in opts :
|
for key,value in opts :
|
||||||
|
@ -350,7 +350,7 @@ Exemple :
|
||||||
try :
|
try :
|
||||||
begin_time = int(value)
|
begin_time = int(value)
|
||||||
except :
|
except :
|
||||||
print 'Le nombre d\'heures doit être un entier'
|
print 'Le nombre d\'heures doit être un entier'
|
||||||
sys.exit(4)
|
sys.exit(4)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
@ -362,7 +362,7 @@ Exemple :
|
||||||
try :
|
try :
|
||||||
end_time = int(value)
|
end_time = int(value)
|
||||||
except :
|
except :
|
||||||
print 'Le nombre d\'heures doit être un entier'
|
print 'Le nombre d\'heures doit être un entier'
|
||||||
sys.exit(4)
|
sys.exit(4)
|
||||||
break
|
break
|
||||||
if begin_time != 24 or end_time:
|
if begin_time != 24 or end_time:
|
||||||
|
@ -376,14 +376,14 @@ Exemple :
|
||||||
file = value
|
file = value
|
||||||
|
|
||||||
|
|
||||||
# affichage du résultat
|
# affichage du résultat
|
||||||
#######################
|
#######################
|
||||||
if not file:
|
out = stats(ip_crans, ip_ext, show, upload_mini, limit, begin_time,
|
||||||
print headers + stats(ip_crans, ip_ext, show, upload_mini, limit, begin_time,
|
|
||||||
end_time, show_download,resolve_dns)
|
end_time, show_download,resolve_dns)
|
||||||
|
out = headers + out
|
||||||
|
if not file:
|
||||||
|
print out.encode("utf-8")
|
||||||
else:
|
else:
|
||||||
with open(file, 'w') as f:
|
with open(file, 'w') as f:
|
||||||
f.write(headers.encode('utf-8'))
|
f.write(out.encode('utf-8'))
|
||||||
f.write(stats(ip_crans, ip_ext, show, upload_mini, limit, begin_time,
|
|
||||||
end_time, show_download,resolve_dns))
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue