diff --git a/gestion/gen_confs/autostatus.py b/gestion/gen_confs/autostatus.py index 50f7deb9..810fa724 100755 --- a/gestion/gen_confs/autostatus.py +++ b/gestion/gen_confs/autostatus.py @@ -110,164 +110,164 @@ class autostatus(gen_config) : # FIN DE LA CONFIGURATION def __str__ (self) : - return "autostatus" + return "autostatus" def make_config (self, dico ) : - """ - Transforme le dico en suite lignes de configuration - """ - liste = dico.keys() - liste.sort() - append = "" - for i in liste : - append = append + " ".join( dico[i] ) + "\n" - return append.encode('iso-8859-15') + """ + Transforme le dico en suite lignes de configuration + """ + liste = dico.keys() + liste.sort() + append = "" + for i in liste : + append = append + " ".join( dico[i] ) + "\n" + return append.encode('iso-8859-15') def mail_contact (self, nom) : - # retourne le mail à qui envoyer les avis pour un serveur - if nom in self.contact.keys() : - return self.contact[nom] - else : - return 'nobody' - + # retourne le mail à qui envoyer les avis pour un serveur + if nom in self.contact.keys() : + return self.contact[nom] + else : + return 'nobody' + def _gen (self) : - # machines crans - ################ - - machines = crans().machines() - - # tri des machines par type - bornes = {} - switchs = {} - serveurs = {} - ferme = {} + # machines crans + ################ + + machines = crans().machines() + + # tri des machines par type + bornes = {} + switchs = {} + serveurs = {} + ferme = {} - # tri des machines - for m in machines : + # tri des machines + for m in machines : - # machine exclue - if m.nom() in self.exclude : - continue - - # les bornes - if m.canal() : - # C'est une borne - if m.info() : - # on regarde si c'est une borne de batiment - if ( m.info()[0][0:3] == "Au " ) and ( len(m.info()[0]) == 5 ) : - bornes[ "1-" + m.info()[0][4]+m.info()[0][3] + "-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] - else : - bornes[ "2-" + m.info()[0] + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] - else : - # on met les bornes non définies à la fin (ordre alphabétique) - bornes[ "3-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Inutilise' ] + # machine exclue + if m.nom() in self.exclude : + continue + + # les bornes + if m.canal() : + # C'est une borne + if m.info() : + # on regarde si c'est une borne de batiment + if ( m.info()[0][0:3] == "Au " ) and ( len(m.info()[0]) == 5 ) : + bornes[ "1-" + m.info()[0][4]+m.info()[0][3] + "-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] + else : + bornes[ "2-" + m.info()[0] + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] + else : + # on met les bornes non définies à la fin (ordre alphabétique) + bornes[ "3-" + m.nom() ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Inutilise' ] - # les switchs - elif m.info() and 'switch' in m.info()[0].lower() : + # les switchs + elif m.info() and 'switch' in m.info()[0].lower() : - # est ce que c'est un batiment - if 'bat' == m.nom()[0:3] : - index = '1-' + m.nom().split(".")[0] - else : - index = '0-' + m.nom().split(".")[0] - - # on ajoute au dictionnaire - switchs[ index ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] + # est ce que c'est un batiment + if 'bat' == m.nom()[0:3] : + index = '1-' + m.nom().split(".")[0] + else : + index = '0-' + m.nom().split(".")[0] + + # on ajoute au dictionnaire + switchs[ index ] = [ m.nom().split(".")[0] , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] - # la ferme - elif '.ferme.crans.org' in m.nom() : - nom = ".".join(m.nom().split(".")[0:2]) - if m.info() : - ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] - else : - ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] - - # les serveurs - else : - if ".wifi.crans.org" in m.nom() : - nom = m.nom().split(".")[0] + ".wifi" - else : - nom = m.nom().split(".")[0] - if m.info() : - serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] - else : - serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] - - # 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") - - # initialisation des variables - in_renater = 0 - route_to_ext = '' - depends_to_ext = '' - - for routeur in traceroute : - - # on commence à rentrer dans la chaine des routeurs renater - if 'renater.fr' in routeur : - in_renater = 1 - - # on est plus dans les routeurs renater donc on arrête - if in_renater and not 'renater.fr' in routeur : - continue - - # ajout du routeur - - # ip - tmp_ip = routeur.split(' ')[1] - - # nom & desciption - if routeur.split(' ')[1] in self.infos_routeurs.keys() : - tmp_name = self.infos_routeurs[tmp_ip][0] - tmp_desc = self.infos_routeurs[tmp_ip][1] - else : - tmp_name = routeur.split(' ')[0].split('.')[0] - tmp_desc = 'Pas de description' - - # dépendances - if not depends_to_ext : - tmp_depends = 'none' - depends_to_ext = tmp_name - else : - tmp_depends = depends_to_ext - depends_to_ext += ',' + tmp_name - - # on l'ajoute à la route - if route_to_ext : - 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) + # la ferme + elif '.ferme.crans.org' in m.nom() : + nom = ".".join(m.nom().split(".")[0:2]) + if m.info() : + ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] + else : + ferme[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] + + # les serveurs + else : + if ".wifi.crans.org" in m.nom() : + nom = m.nom().split(".")[0] + ".wifi" + else : + nom = m.nom().split(".")[0] + if m.info() : + serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , m.info()[0] ] + else : + serveurs[ nom ] = [ nom , m.nom() , 'none' , self.mail_contact(m.nom()) , 'Infos non disponibles' ] + + # 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") + + # initialisation des variables + in_renater = 0 + route_to_ext = '' + depends_to_ext = '' + + for routeur in traceroute : + + # on commence à rentrer dans la chaine des routeurs renater + if 'renater.fr' in routeur : + in_renater = 1 + + # on est plus dans les routeurs renater donc on arrête + if in_renater and not 'renater.fr' in routeur : + continue + + # ajout du routeur + + # ip + tmp_ip = routeur.split(' ')[1] + + # nom & desciption + if routeur.split(' ')[1] in self.infos_routeurs.keys() : + tmp_name = self.infos_routeurs[tmp_ip][0] + tmp_desc = self.infos_routeurs[tmp_ip][1] + else : + tmp_name = routeur.split(' ')[0].split('.')[0] + tmp_desc = 'Pas de description' + + # dépendances + if not depends_to_ext : + tmp_depends = 'none' + depends_to_ext = tmp_name + else : + tmp_depends = depends_to_ext + depends_to_ext += ',' + tmp_name + + # on l'ajoute à la route + if route_to_ext : + 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) - # services extérieurs - ##################### - - services_exterieurs = {} - for key in self.services_exterieurs.keys() : - s = self.services_exterieurs[key] - if s[2] : - services_exterieurs[ key ] = [ s[0] + ':' + str(s[2]), s[1] , depends_to_ext, s[4] , s[3] ] - else : - services_exterieurs[ key ] = [ s[0] , s[1] , depends_to_ext, s[4] , s[3] ] + # services extérieurs + ##################### + + services_exterieurs = {} + for key in self.services_exterieurs.keys() : + s = self.services_exterieurs[key] + if s[2] : + services_exterieurs[ key ] = [ s[0] + ':' + str(s[2]), s[1] , depends_to_ext, s[4] , s[3] ] + else : + services_exterieurs[ key ] = [ s[0] , s[1] , depends_to_ext, s[4] , s[3] ] - # génération du fichier - ####################### - - file = self._open_conf(self.CONFFILE, "#") - - # génère le dictionnaire pour les modifications - dico = {} - dico['switchs'] = self.make_config(switchs) - dico['bornes'] = self.make_config(bornes) - dico['serveurs'] = self.make_config(serveurs) - dico['ferme'] = self.make_config(ferme) - dico['route'] = route_to_ext.encode('iso-8859-15') - dico['exterieur'] = self.make_config(services_exterieurs) - - # on écrit dans le fichier de configuration - file.write( self.matrice % dico ) - - # on ferme le fichier - file.close() + # génération du fichier + ####################### + + file = self._open_conf(self.CONFFILE, "#") + + # génère le dictionnaire pour les modifications + dico = {} + dico['switchs'] = self.make_config(switchs) + dico['bornes'] = self.make_config(bornes) + dico['serveurs'] = self.make_config(serveurs) + dico['ferme'] = self.make_config(ferme) + dico['route'] = route_to_ext.encode('iso-8859-15') + dico['exterieur'] = self.make_config(services_exterieurs) + + # on écrit dans le fichier de configuration + file.write( self.matrice % dico ) + + # on ferme le fichier + file.close()