From 0dfc1e151c4359941904bb4c17412a1bed9d9ca0 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Thu, 14 Nov 2013 02:22:41 +0100 Subject: [PATCH] =?UTF-8?q?[analyse.py]=20Passage=20en=20UTF-8=20et=20on?= =?UTF-8?q?=20print=20pas=20impun=C3=A9ment=20un=20unicode.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- surveillance/analyse.py | 104 ++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/surveillance/analyse.py b/surveillance/analyse.py index 6890e337..9edaf8ba 100755 --- a/surveillance/analyse.py +++ b/surveillance/analyse.py @@ -1,5 +1,5 @@ #! /usr/bin/env python -# -*- coding: iso8859-15 -*- +# -*- encoding: utf-8 -*- import socket 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, 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 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 - ip_ext : ips des machines extérieures - chaine de caratère si il a qu'une machine + ip_ext : ips des machines extérieures + chaine de caratère si il a qu'une machine 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 - upload_mini : n'affiche que les lignes avec plus d'upload que la valeur donnée - show_limit : nombre max de lignes à afficher - begin_time : date de départ d'analyse (en heure avant maintenant) + upload_mini : n'affiche que les lignes avec plus d'upload que la valeur donnée + show_limit : nombre max de lignes à afficher + begin_time : date de départ 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: @@ -125,21 +125,21 @@ def stats(ip_crans=[], ip_ext=[], results = curseur.fetchall() # on transforme tout en chaine - results = [ [ str(x) for x in line ] for line in results ] - headers="" + results = [ [ str(x).decode("utf-8") for x in line ] for line in results ] + headers = u"" try: upload = 0 download = 0 for line in results: - upload+=int(line[4]) - download+=int(line[3]) - headers+=" upload: %sMo\n" % (upload/1024/1024) - headers+=" download: %sMo\n" % (download/1024/1024) + upload += int(line[4]) + download += int(line[3]) + headers += u" upload: %sMo\n" % (upload/1024/1024) + headers += u" download: %sMo\n" % (download/1024/1024) except IndexError: pass # on modifie les ip en noms de machine et les ports en noms - def nom_de_machine (ip) : + def nom_de_machine(ip): if not resolve_dns: return ip try: return socket.gethostbyaddr(ip)[0] @@ -151,7 +151,7 @@ def stats(ip_crans=[], ip_ext=[], x.strip().replace('/tcp','').replace('/udp',''))[:2] for x in open('/etc/services').readlines() if x[0] not in ['\n','#']]: - port_to_service[port]=service + port_to_service[port] = service for champ in select: if champ == 'ip_ext': @@ -201,23 +201,23 @@ if __name__ == '__main__' : usage: analyse.py [option]... Option fait partie des options suivantes : -d ou --show-download - trier par download plutôt que par upload + trier par download plutôt que par upload --ip-crans [ip] ip de la machine crans --ip-ext [ip] - ip de la machine extérieure + ip de la machine extérieure --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 des lignes à afficher + upload mini des lignes à afficher --show-limit [n] - nombre maximum de lignes à afficher + nombre maximum de lignes à afficher --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] heure de fin de l'analyse (en heures depuis maintenant) -n - Ne pas résoudre les adresses ip + Ne pas résoudre les adresses ip Exemple : sudo /usr/scripts/surveillance/analyse.py bilou.crans.org""" @@ -250,9 +250,9 @@ Exemple : if key == '-d' or key == '--show-download': show_download = True if show_download: - headers+=u"Statistiques de download\n" + headers += u"Statistiques de download\n" else: - headers+=u"Statistiques d'upload\n" + headers += u"Statistiques d'upload\n" # recherche de la machine crans ############################### @@ -264,15 +264,15 @@ Exemple : ip_crans.append(socket.gethostbyaddr(value)[2][0]) ip_crans_nom.append(socket.gethostbyaddr(value)[0]) except socket.gaierror : - print "Hôte %s inconnu" % value + print "Hôte %s inconnu" % value sys.exit(5) except socket.herror: - print "Hôte %s inconnu" % value + print "Hôte %s inconnu" % value ip_crans.append(value) 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] elif ip_crans_nom: - headers+=u' depuis les machines %s\n' % ', '.join(ip_crans_nom) + headers += u' depuis les machines %s\n' % ', '.join(ip_crans_nom) # recherche de la machine ext ############################# @@ -280,13 +280,13 @@ Exemple : ip_ext_nom = [] for key,value in opts : if key == '--ip-ext' : - # recherche de l'ip de la machine extérieur + # recherche de l'ip de la machine extérieur try: ip_ext.append(socket.gethostbyaddr(value)[2][0]) except socket.herror: ip_ext.append(value) except socket.gaierror : - print "Hôte %s inconnu" % value + print "Hôte %s inconnu" % value sys.exit(5) # recherche du nom d'hote @@ -297,9 +297,9 @@ Exemple : except socket.gaierror : ip_ext_nom.append(ip_ext[-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: - 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 #################### @@ -309,9 +309,9 @@ Exemple : if not show : show = ['ip_crans', 'ip_ext', 'port_crans', 'port_ext'] 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 for key,value in opts : @@ -319,11 +319,11 @@ Exemple : try : upload_mini = int(value) except : - print 'L\'upload mini doit être un entier (en MO)' + print 'L\'upload mini doit être un entier (en MO)' sys.exit(4) break 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 ################################## @@ -332,17 +332,17 @@ Exemple : if key == '--show-limit' : try : limit = int(value) - headers+=u' affichage des %d premiers résultats\n' % limit + headers += u' affichage des %d premiers résultats\n' % limit except : print 'Le nombre limite n\'est pas un entier' sys.exit(3) break - # Résolution dns + # Résolution dns ################ resolve_dns = '-n' not in [key for (key,value) in opts] - # début de l'analyse + # début de l'analyse #################### begin_time = 24 for key,value in opts : @@ -350,7 +350,7 @@ Exemple : try : begin_time = int(value) except : - print 'Le nombre d\'heures doit être un entier' + print 'Le nombre d\'heures doit être un entier' sys.exit(4) break @@ -362,28 +362,28 @@ Exemple : try : end_time = int(value) except : - print 'Le nombre d\'heures doit être un entier' + print 'Le nombre d\'heures doit être un entier' sys.exit(4) break if begin_time != 24 or end_time: - headers+=u' entre il y a %d heure(s) et il y a %d heure(s)\n' % (begin_time,end_time) + headers += u' entre il y a %d heure(s) et il y a %d heure(s)\n' % (begin_time,end_time) # fichier de sortie ################### - file=None + file = None for key,value in opts : if key == '--file' : file = value - # affichage du résultat + # affichage du résultat ####################### - if not file: - print headers + stats(ip_crans, ip_ext, show, upload_mini, limit, begin_time, + out = stats(ip_crans, ip_ext, show, upload_mini, limit, begin_time, end_time, show_download,resolve_dns) + out = headers + out + if not file: + print out.encode("utf-8") else: with open(file, 'w') as f: - f.write(headers.encode('utf-8')) - f.write(stats(ip_crans, ip_ext, show, upload_mini, limit, begin_time, - end_time, show_download,resolve_dns)) + f.write(out.encode('utf-8'))