diff --git a/gestion/gen_confs/autostatus.py b/gestion/gen_confs/autostatus.py new file mode 100755 index 00000000..244ce502 --- /dev/null +++ b/gestion/gen_confs/autostatus.py @@ -0,0 +1,166 @@ +#! /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 )