#! /usr/bin/env python # -*- coding: iso-8859-15 -*- import sys, os sys.path.append('/usr/scripts/gestion') from ldap_crans import crans, crans_ldap, strip_accents def autostatus (db) : # fichier de l'autostatus #file = open('/home/chove/hosts','w') file = open('/etc/autostatus/hosts','w') # machines à ne pas mettre dans l'autostatus exclude = ["non-configure.wifi.crans.org"] # machines crans machines = crans().machines() # tri des machines par type bornes = {} switchs = {} serveurs = {} # tri des machines for m in machines : # machine exclue if m.nom() in exclude : print "Exclusion de %s" % m.nom() continue # on ajoute au bon tableau les infos if m.canal() : # C'est une borne (format : index#~#nom#~#commentaire) 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.info()[0] ] else : bornes[ "2-" +m.info()[0] ] = [ m.nom() , m.info()[0] ] else : # on met les bornes non définies à la fin (ordre alphabétique) bornes[ "3-" + m.nom() ] = [ m.nom() , "Inutilisee" ] elif 'bat' in m.nom() or 'backbone' in m.nom() : # C'est un switch # on convertit le bat# en bat#-0 if not "-" in m.nom().split(".")[0] : index = m.nom().split(".")[0] + "-0" else : index = m.nom().split(".")[0] if m.info() : switchs[ index ] = [ m.nom() , m.info()[0] ] else : switchs[ index ] = [ m.nom() , "Infos non disponiles" ] else : # C'est un serveur if m.info() : serveurs[ m.nom() ] = [ m.nom() , m.info()[0] ] else : serveurs[ m.nom() ] = [ m.nom() , "Infos non disponiles" ] # début du fichier file.write( """# NE PAS MODIFIER : fichié généré par /home/chove/autostatus.py # Format : name address depend,list contact description # routeurs vers l'extérieur # ############################# %HTML: Routeurs, dans l'ordre où ils sont entre le crans et l'extérieur : komaz 138.231.136.4 none alerts@crans.org Notre routeur komaz-ext 138.231.135.6 komaz alerts@crans.org Patte externe de notre routeur. irts 138.231.135.5 komaz,komaz-ext alerts@crans.org Le routeur de l'ENS qui assure la liaison CRANS-ENS. irts-ext 138.231.132.5 komaz,komaz-ext,irts alerts@crans.org Patte externe du routeur IRTS. gateway.zrt 138.231.132.1 komaz,komaz-ext,irts,irts-ext alerts@crans.org Routeur de l'ENS kwai 138.231.176.9 komaz,komaz-ext,irts,irts-ext,gateway.zrt alerts@crans.org Routeur de l'ENS pioneer 138.231.176.1 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai alerts@crans.org Le routeur principal de lENS, Interface interne. pioneer-ext 193.49.65.2 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai,pioneer alerts@crans.org Le routeur principal de lENS, Interface externe. RenaterCachan 193.49.65.1 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai,pioneer,pioneer-ext alerts@crans.org Routeur RENATER CachanCSSI1 193.51.181.186 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan alerts@crans.org Routeur RENATER CachanCSSI2 193.51.181.185 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan,CachanCSSI1 alerts@crans.org Routeur RENATER OrsayCSSI1 193.51.180.122 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan,CachanCSSI1,CachanCSSI2 alerts@crans.org Routeur RENATER OrsayCSSI2 193.51.180.121 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan,CachanCSSI1,CachanCSSI2,OrsayCSSI1 alerts@crans.org Routeur RENATER nriCSSI 193.51.179.41 komaz,komaz-ext,irts,irts-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan,CachanCSSI1,CachanCSSI2,OrsayCSSI1,OrsayCSSI2 alerts@crans.org Routeur RENATER """ ) # serveurs du crans file.write( """ # serveurs du crans # ##################### %HTML:

%HTML: Serveurs : """ ) liste = serveurs.keys() liste.sort() for i in liste : data = serveurs[i] if ".wifi.crans.org" in i : file.write ( data[0].split(".")[0] + ".wifi " + data[0] + " none nobody " + strip_accents ( data[1] + "\n" ).replace('_',' ') ) else : file.write ( data[0].split(".")[0] + " " + data[0] + " none nobody " + strip_accents ( data[1] + "\n" ).replace('_',' ') ) # switchs file.write ( """ # switchs # ########### %HTML:

%HTML: Switchs : """ ) liste = switchs.keys() liste.sort() for i in liste : data = switchs[i] file.write ( data[0].split(".")[0] + " " + data[0] + " none nobody " + strip_accents ( data[1] + "\n" ).replace('_',' ') ) # bornes wifi file.write ( """ # bornes wifi # ############### %HTML:

%HTML: Bornes wifi : """ ) liste = bornes.keys() liste.sort() for i in liste : data = bornes[i] file.write ( data[0].split(".")[0] + " " + data[0] + " none nobody " + strip_accents ( data[1] + "\n" ).replace('_',' ') ) # services extérieurs file.write ( """ # Sites web et Services # ######################### %HTML:

%HTML: Sites web et Services HORS de l'ENS: %HTML: (21:FTP ; 80:HTTP ; 119:news ; 5190:port du protocole ICQ) Jussieu:21 195.83.118.1 irts,irts-ext,komaz,komaz-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan nobody Le serveur FTP de Jussieu. (France) Free:21 213.228.0.141 irts,irts-ext,komaz,komaz-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan nobody Le serveur FTP de free. (France) Voila:80 195.101.94.80 irts,irts-ext,komaz,komaz-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan nobody Est-ce que Voila fonctionne ? (France) Yahoo!:80 66.94.230.39 irts,irts-ext,komaz,komaz-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan nobody Est-ce que Yahoo! fonctionne ? (USA) Altavista:80 216.155.200.155 irts,irts-ext,komaz,komaz-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan nobody Est-ce que Altavista fonctionne ? (USA) """ ) file.close() # on commit os.popen( "cvs -Q -d '/usr/cvs-rep' commit -l -m 'Changement dans l autotstatus' /etc/autostatus/hosts" ) if __name__ == '__main__' : # base de données base = crans_ldap() # lancement du script autostatus ( base )