[/usr/scripts/gestion/gen_confs/autostatus.py] Passage en utf-8

darcs-hash:20081215172345-bd074-62512369a9fece3c3c0739d4aa309539ffbe1ae7.gz
This commit is contained in:
Antoine Durand-Gasselin 2008-12-15 18:23:45 +01:00
parent def09a7ba6
commit 896899ce7c
2 changed files with 52 additions and 52 deletions

View file

@ -1,9 +1,9 @@
#! /usr/bin/env python #! /usr/bin/env python
# -*- coding: iso-8859-15 -*- # -*- coding: utf-8 -*-
""" """
Classe de génération du fichier de l'autostatus Classe de génération du fichier de l'autostatus
Utilisé par generate.py Utilisé par generate.py
""" """
# importation des fonctions et classes # importation des fonctions et classes
@ -13,7 +13,7 @@ sys.path.append('/usr/scripts/gestion')
from ldap_crans import AssociationCrans, BorneWifi from ldap_crans import AssociationCrans, BorneWifi
from gen_confs import gen_config from gen_confs import gen_config
# définition de la classe # définition de la classe
def inform(string): def inform(string):
pass pass
@ -28,7 +28,7 @@ class autostatus(gen_config) :
# fichier de l'autostatus # fichier de l'autostatus
CONFFILE = '/usr/scripts/var/autostatus/hosts' CONFFILE = '/usr/scripts/var/autostatus/hosts'
# machines crans à ne pas mettre dans l'autostatus # machines crans à ne pas mettre dans l'autostatus
pasimportant = ["non-configure.wifi.crans.org", pasimportant = ["non-configure.wifi.crans.org",
"epave.ferme.crans.org", "epave.ferme.crans.org",
"kiss.crans.org", "kiss.crans.org",
@ -64,12 +64,12 @@ class autostatus(gen_config) :
# matrice du fichier d'autostatus # matrice du fichier d'autostatus
matrice = """# Format : name address depend,list contact description matrice = u"""# Format : name address depend,list contact description
# routeurs vers l'extérieur # # routeurs vers l'extérieur #
############################# #############################
%%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Routeurs, dans l'ordre où ils sont entre le crans et l'extérieur :</font></b></TR> %%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Routeurs, dans l'ordre où ils sont entre le crans et l'extérieur :</font></b></TR>
%(route)s %(route)s
@ -83,7 +83,7 @@ class autostatus(gen_config) :
# ferme # # ferme #
######### #########
%%HTML: <TR> <TD class=table colSpan=3><p></TD></TR> <TR><td colspan=3 class="table"><font size="+1"><B>La ferme, diffusion de la télé :</font></b></TR> %%HTML: <TR> <TD class=table colSpan=3><p></TD></TR> <TR><td colspan=3 class="table"><font size="+1"><B>La ferme, diffusion de la télé :</font></b></TR>
%(ferme)s %(ferme)s
@ -108,19 +108,19 @@ class autostatus(gen_config) :
%(exterieur)s %(exterieur)s
""" """
# quelque descriptions de routeurs triés par IP (pour la route vers l'extérieur) # quelque descriptions de routeurs triés par IP (pour la route vers l'extérieur)
infos_routeurs = {} infos_routeurs = {}
infos_routeurs [ '138.231.136.4' ] = ['Komaz', 'Routeur principal du CRANS'] infos_routeurs [ '138.231.136.4' ] = ['Komaz', u'Routeur principal du CRANS']
infos_routeurs [ '138.231.135.5' ] = ['IRTS', 'Routeur de l\'ENS assurant la liaison CRANS<->ENS'] infos_routeurs [ '138.231.135.5' ] = ['IRTS', u'Routeur de l\'ENS assurant la liaison CRANS<->ENS']
infos_routeurs [ '138.231.132.1' ] = ['Gateway', 'Routeur de l\'ENS'] infos_routeurs [ '138.231.132.1' ] = ['Gateway', u'Routeur de l\'ENS']
infos_routeurs [ '138.231.176.1' ] = ['Pioneer', 'Routeur principal de l\'ENS'] infos_routeurs [ '138.231.176.1' ] = ['Pioneer', u'Routeur principal de l\'ENS']
infos_routeurs [ '193.49.65.1' ] = ['RenaterCachan1' , 'Routeur Renater' ] infos_routeurs [ '193.49.65.1' ] = ['RenaterCachan1' , u'Routeur Renater' ]
infos_routeurs [ '193.51.181.186' ] = ['RenaterCachan2', 'Routeur Renater'] infos_routeurs [ '193.51.181.186' ] = ['RenaterCachan2', u'Routeur Renater']
infos_routeurs [ '193.51.180.166' ] = ['RenaterJussieu1', 'Routeur Renater'] infos_routeurs [ '193.51.180.166' ] = ['RenaterJussieu1', u'Routeur Renater']
infos_routeurs [ '193.51.180.158' ] = ['RenaterJussieu2', 'Routeur Renater'] infos_routeurs [ '193.51.180.158' ] = ['RenaterJussieu2', u'Routeur Renater']
# services extérieurs (triés par clé de dictionnaire) # services extérieurs (triés par clé de dictionnaire)
# format [ nom, ip, port(0=ping), description ] # format [ nom, ip, port(0=ping), description ]
services_exterieurs = {} services_exterieurs = {}
@ -130,10 +130,10 @@ class autostatus(gen_config) :
services_exterieurs ['Yahoo!'] = [ 'Yahoo!', '68.142.226.50', 80, 'Est-ce que Yahoo! fonctionne ? (USA)', 'nobody' ] services_exterieurs ['Yahoo!'] = [ 'Yahoo!', '68.142.226.50', 80, 'Est-ce que Yahoo! fonctionne ? (USA)', 'nobody' ]
services_exterieurs ['Google'] = [ 'Google', '216.239.59.99', 80, 'Est-ce que Google fonctionne ? (USA)', 'nobody' ] services_exterieurs ['Google'] = [ 'Google', '216.239.59.99', 80, 'Est-ce que Google fonctionne ? (USA)', 'nobody' ]
# personnes à informer pour l'indiponibilité de certains serveurs # personnes à informer pour l'indiponibilité de certains serveurs
contact = {} contact = {}
# service à redémarer # service à redémarer
restart_cmd = "" restart_cmd = ""
# FIN DE LA CONFIGURATION # FIN DE LA CONFIGURATION
@ -150,10 +150,10 @@ class autostatus(gen_config) :
append = "" append = ""
for i in liste : for i in liste :
append = append + " ".join( dico[i] ) + "\n" append = append + " ".join( dico[i] ) + "\n"
return append.encode('iso-8859-15') return append.encode('utf-8')
def mail_contact (self, nom) : def mail_contact (self, nom) :
# retourne le mail à qui envoyer les avis pour un serveur # retourne le mail à qui envoyer les avis pour un serveur
if nom in self.contact.keys() : if nom in self.contact.keys() :
return self.contact[nom] return self.contact[nom]
else : else :
@ -163,9 +163,9 @@ class autostatus(gen_config) :
# machines crans # machines crans
################ ################
inform(u"Récupération des machines du Cr@ns") inform(u"Récupération des machines du Cr@ns")
machines = AssociationCrans().machines() machines = AssociationCrans().machines()
# Quand un serveur est à la fois dans adm et dans autre chose, # Quand un serveur est à la fois dans adm et dans autre chose,
# on garde que le autre chose # on garde que le autre chose
machines2 = machines machines2 = machines
for m in machines: for m in machines:
@ -201,8 +201,8 @@ class autostatus(gen_config) :
else : else :
bornes[ "2-" + info[0] + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , info[0] ] bornes[ "2-" + info[0] + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , info[0] ]
else : else :
# on met les bornes non définies à la fin (ordre alphabétique) # on met les bornes non définies à la fin (ordre alphabétique)
# On ne les met pas, ça pollue l'autostatus # On ne les met pas, ça pollue l'autostatus
# bornes[ "3-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Inutilise' ] # bornes[ "3-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Inutilise' ]
pass pass
@ -237,10 +237,10 @@ class autostatus(gen_config) :
else : else :
serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ]
# route vers l'extérieur # route vers l'extérieur
######################## ########################
inform(u"Récupération de la route vers l'extérieur") inform(u"Récupération de la route vers l'extérieur")
# on récupère la route vers l'extérieur # on récupère la route vers l'extérieur
traceroute = commands.getoutput("/usr/bin/traceroute www.free.fr 2> /dev/null | sed 's/\*//g' | sed 's/ */ /g' | sed 's/^ //g' | sed 's/[(,)]//g' | cut -d ' ' -f 2,3").split("\n") traceroute = commands.getoutput("/usr/bin/traceroute www.free.fr 2> /dev/null | sed 's/\*//g' | sed 's/ */ /g' | sed 's/^ //g' | sed 's/[(,)]//g' | cut -d ' ' -f 2,3").split("\n")
inform(u"Analyse de la route") inform(u"Analyse de la route")
# initialisation des variables # initialisation des variables
@ -250,11 +250,11 @@ class autostatus(gen_config) :
for routeur in traceroute : for routeur in traceroute :
# on commence à rentrer dans la chaine des routeurs renater # on commence à rentrer dans la chaine des routeurs renater
if 'renater.fr' in routeur : if 'renater.fr' in routeur :
in_renater = 1 in_renater = 1
# on est plus dans les routeurs renater donc on arrête # on est plus dans les routeurs renater donc on arrête
if in_renater and not 'renater.fr' in routeur : if in_renater and not 'renater.fr' in routeur :
continue continue
@ -271,7 +271,7 @@ class autostatus(gen_config) :
tmp_name = routeur.split(' ')[0].split('.')[0] tmp_name = routeur.split(' ')[0].split('.')[0]
tmp_desc = 'Pas de description' tmp_desc = 'Pas de description'
# dépendances # dépendances
if not depends_to_ext : if not depends_to_ext :
tmp_depends = 'none' tmp_depends = 'none'
depends_to_ext = tmp_name depends_to_ext = tmp_name
@ -279,14 +279,14 @@ class autostatus(gen_config) :
tmp_depends = depends_to_ext tmp_depends = depends_to_ext
depends_to_ext += ',' + tmp_name depends_to_ext += ',' + tmp_name
# on l'ajoute à la route # on l'ajoute à la route
if route_to_ext : if route_to_ext :
route_to_ext += '\n' route_to_ext += '\n'
route_to_ext += '%s %s %s %s %s' % (tmp_name, tmp_ip, tmp_depends,self.mail_contact(tmp_name),tmp_desc) route_to_ext += '%s %s %s %s %s' % (tmp_name, tmp_ip, tmp_depends,self.mail_contact(tmp_name),tmp_desc)
# services extérieurs # services extérieurs
##################### #####################
inform(u"Services extérieurs") inform(u"Services extérieurs")
services_exterieurs = {} services_exterieurs = {}
for key in self.services_exterieurs.keys() : for key in self.services_exterieurs.keys() :
s = self.services_exterieurs[key] s = self.services_exterieurs[key]
@ -295,12 +295,12 @@ class autostatus(gen_config) :
else : else :
services_exterieurs[ key ] = [ s[0] , s[1] , depends_to_ext, s[4] , s[3] ] services_exterieurs[ key ] = [ s[0] , s[1] , depends_to_ext, s[4] , s[3] ]
# génération du fichier # génération du fichier
####################### #######################
file = self._open_conf(self.CONFFILE, "#") file = self._open_conf(self.CONFFILE, "#")
# génère le dictionnaire pour les modifications # génère le dictionnaire pour les modifications
dico = {} dico = {}
dico['switchs'] = self.make_config(switchs) dico['switchs'] = self.make_config(switchs)
dico['bornes'] = self.make_config(bornes) dico['bornes'] = self.make_config(bornes)
@ -309,7 +309,7 @@ class autostatus(gen_config) :
dico['route'] = route_to_ext.encode('iso-8859-15') dico['route'] = route_to_ext.encode('iso-8859-15')
dico['exterieur'] = self.make_config(services_exterieurs) dico['exterieur'] = self.make_config(services_exterieurs)
# on écrit dans le fichier de configuration # on écrit dans le fichier de configuration
file.write( self.matrice % dico ) file.write( self.matrice % dico )
# on ferme le fichier # on ferme le fichier