gestion de l'autostatus

darcs-hash:20041021211022-4ec08-f8280930fcbbd5f36814b0cbacc71be2f1b152e4.gz
This commit is contained in:
chove 2004-10-21 23:10:22 +02:00
parent 15940a3b36
commit c5da6c9aeb

166
gestion/gen_confs/autostatus.py Executable file
View file

@ -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: <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>
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: <TR> <TD class=table colSpan=3><p></TD></TR>
%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Serveurs :</font></b></TR>
""" )
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: <TR> <TD class=table colSpan=3><p></TD></TR>
%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Switchs :</font></b></TR>
""" )
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: <TR> <TD class=table colSpan=3><p></TD></TR>
%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Bornes wifi :</font></b></TR>
""" )
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: <TR> <TD class=table colSpan=3><p></TD></TR>
%HTML: <TR><td colspan=3 class="table"><font size="+1"><B>Sites web et Services HORS de l'ENS:</font></b></TR>
%HTML: <TR><td colspan=3 class="table"><font size="2">(21:FTP ; 80:HTTP ; 119:news ; 5190:port du protocole ICQ)</TR>
Jussieu:21 195.83.118.1 irts,irts-ext,komaz,komaz-ext,gateway.zrt,kwai,pioneer,pioneer-ext,RenaterCachan nobody Le serveur <a href="ftp://ftp.lip6.fr">FTP</a> 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 <a href="ftp://ftp.free.fr">FTP</a> 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 <a href="http://www.voila.fr">Voila</a> 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 <a href="http://www.yahoo.com">Yahoo!</a> 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 <a href="http://www.altavista.com">Altavista</a> 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 )