[/usr/scripts/gestion/gen_confs/autostatus.py] Passage en utf-8
darcs-hash:20081215172345-bd074-62512369a9fece3c3c0739d4aa309539ffbe1ae7.gz
This commit is contained in:
parent
def09a7ba6
commit
896899ce7c
2 changed files with 52 additions and 52 deletions
|
@ -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
|
||||||
|
|
|
@ -97,7 +97,7 @@ class base_reconfigure:
|
||||||
# Le service n'existe pas
|
# Le service n'existe pas
|
||||||
if debug:
|
if debug:
|
||||||
print "Le service %s n'est pas disponible sur %s" % (service, hostname)
|
print "Le service %s n'est pas disponible sur %s" % (service, hostname)
|
||||||
|
|
||||||
if debug:
|
if debug:
|
||||||
reste = db.services_to_restart()
|
reste = db.services_to_restart()
|
||||||
if reste:
|
if reste:
|
||||||
|
@ -106,7 +106,7 @@ class base_reconfigure:
|
||||||
print '\t%s' % s
|
print '\t%s' % s
|
||||||
else:
|
else:
|
||||||
print "Plus rien à faire"
|
print "Plus rien à faire"
|
||||||
|
|
||||||
def _machines(self):
|
def _machines(self):
|
||||||
""" Retourne les machines de la base étant 'à jour' """
|
""" Retourne les machines de la base étant 'à jour' """
|
||||||
return db.all_machines(graphic=True)
|
return db.all_machines(graphic=True)
|
||||||
|
@ -122,7 +122,7 @@ class base_reconfigure:
|
||||||
import firewall
|
import firewall
|
||||||
cprint(u"Mise a jour correspondance MAC-IP", 'gras')
|
cprint(u"Mise a jour correspondance MAC-IP", 'gras')
|
||||||
eval("firewall.firewall_%s()" % hostname).mac_ip_maj(ips)
|
eval("firewall.firewall_%s()" % hostname).mac_ip_maj(ips)
|
||||||
|
|
||||||
class rouge(base_reconfigure):
|
class rouge(base_reconfigure):
|
||||||
def autostatus(self):
|
def autostatus(self):
|
||||||
from autostatus import autostatus
|
from autostatus import autostatus
|
||||||
|
@ -131,7 +131,7 @@ class rouge(base_reconfigure):
|
||||||
def dns(self):
|
def dns(self):
|
||||||
from gen_confs.bind import dns
|
from gen_confs.bind import dns
|
||||||
self._do(dns(), self._machines())
|
self._do(dns(), self._machines())
|
||||||
|
|
||||||
def dhcp(self):
|
def dhcp(self):
|
||||||
from gen_confs.dhcpd import dhcp
|
from gen_confs.dhcpd import dhcp
|
||||||
self._do(dhcp(), self._machines())
|
self._do(dhcp(), self._machines())
|
||||||
|
@ -155,7 +155,7 @@ class rouge(base_reconfigure):
|
||||||
def mail_solde(self, modifs):
|
def mail_solde(self, modifs):
|
||||||
from gen_confs.supervison import mail_solde
|
from gen_confs.supervison import mail_solde
|
||||||
self._do(mail_solde(modifs))
|
self._do(mail_solde(modifs))
|
||||||
|
|
||||||
def switch(self, chambres):
|
def switch(self, chambres):
|
||||||
from gen_confs.switchs import switch
|
from gen_confs.switchs import switch
|
||||||
self._do(switch(chambres))
|
self._do(switch(chambres))
|
||||||
|
@ -215,7 +215,7 @@ class komaz(base_reconfigure):
|
||||||
|
|
||||||
def blacklist(self):
|
def blacklist(self):
|
||||||
self.__fw().blacklist()
|
self.__fw().blacklist()
|
||||||
|
|
||||||
def classify(self, ips):
|
def classify(self, ips):
|
||||||
self.__fw().classes_p2p_maj(ips)
|
self.__fw().classes_p2p_maj(ips)
|
||||||
|
|
||||||
|
@ -340,7 +340,7 @@ if __name__ == '__main__':
|
||||||
for s in db.services_to_restart():
|
for s in db.services_to_restart():
|
||||||
print '\t%s' % s
|
print '\t%s' % s
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
elif opt == '--reconnect':
|
elif opt == '--reconnect':
|
||||||
# Personnes à reconnecter
|
# Personnes à reconnecter
|
||||||
print 'Recherche des personnes en fin de sanction...'
|
print 'Recherche des personnes en fin de sanction...'
|
||||||
|
@ -356,7 +356,7 @@ if __name__ == '__main__':
|
||||||
print "Ajout de blacklist_%s pour reconfiguration" % s
|
print "Ajout de blacklist_%s pour reconfiguration" % s
|
||||||
db.services_to_restart('blacklist_%s' % s)
|
db.services_to_restart('blacklist_%s' % s)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
elif opt == '--add':
|
elif opt == '--add':
|
||||||
# Ajout d'un item dans les services à redémarrer
|
# Ajout d'un item dans les services à redémarrer
|
||||||
for serv in val.split('&'):
|
for serv in val.split('&'):
|
||||||
|
@ -365,19 +365,19 @@ if __name__ == '__main__':
|
||||||
arg = arg.split(',')
|
arg = arg.split(',')
|
||||||
else:
|
else:
|
||||||
arg = []
|
arg = []
|
||||||
|
|
||||||
print 'Ajout de %s (%s)' % (serv, arg)
|
print 'Ajout de %s (%s)' % (serv, arg)
|
||||||
db.services_to_restart(serv, arg)
|
db.services_to_restart(serv, arg)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
elif opt == '-h' or opt == '--help':
|
elif opt == '-h' or opt == '--help':
|
||||||
print __doc__ % { 'prog': sys.argv[0].split('/')[-1],
|
print __doc__ % { 'prog': sys.argv[0].split('/')[-1],
|
||||||
'options': '--' + '\n\t--'.join(args_autorises) }
|
'options': '--' + '\n\t--'.join(args_autorises) }
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
elif len(opt) > 2 and opt[:2] == '--':
|
elif len(opt) > 2 and opt[:2] == '--':
|
||||||
to_do[opt[2:]] = val.split('&')
|
to_do[opt[2:]] = val.split('&')
|
||||||
|
|
||||||
|
|
||||||
# On fait ce qu'il y a à faire
|
# On fait ce qu'il y a à faire
|
||||||
classe(to_do)
|
classe(to_do)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue