Gestion des fichiers pour sila aussi.

darcs-hash:20041017142421-41617-e4954e5db4233194c6b8a0ce3dda7aab177eaf19.gz
This commit is contained in:
pauget 2004-10-17 16:24:21 +02:00
parent c6b6075c93
commit ca93793889

View file

@ -1,15 +1,27 @@
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
import sys, sre
from socket import gethostname
hostname = gethostname().split(".")[0]
# Fichiers à modifier et chaine indiquant un commentaire dans ceux-ci
if hostname == 'zamok' :
fichiers = { '/etc/bind/named.conf.options' : '//' ,
'/etc/postfix/main.cf' : '#' }
import sys, sre
elif hostname == 'sila' :
fichiers = { '/etc/bind/named.conf.options' : '//' ,
'/etc/squid/squid.conf' : '#' }
else :
print "Script sans effet sur cette machine."
sys.exit(1)
def edit(file,comment,secours) :
""" Edite le fichier fourni en commentant (mode normal)
ou décommentant (mode secours) les lignes se terminant avec #POUR SECOURS """
ou décommentant (mode secours) les lignes signalées :
* celles se terminant avec #POUR SECOURS
* ou les n lignes (<10)suivant une qui commande par #POUR SECOURS-n
(si le -n est omis une seule ligne est affectée)"""
signal = '#POUR SECOURS'
l = len(signal)
@ -17,11 +29,11 @@ def edit(file,comment,secours) :
fd = open(file)
line = fd.readline()
new = ''
nextone = False # La prochaine ligne est-elle a triter ? non
reste = 0 # Nombre de lignes restant à traiter
while line :
l = line.rstrip()
mo = sre.match('^(.*)'+signal+'$',l)
if (mo and len(mo.group(1)) > 1) or nextone:
mo = sre.match('^(.*)'+signal+'(|-.)$',l)
if (mo and len(mo.group(1)) > 1) or reste:
# Ligne pour secours
if not sre.match('^' + comment,l) and not secours:
# On est actuellement configuré en secours
@ -34,12 +46,13 @@ def edit(file,comment,secours) :
else :
# Rien à faire, on est bien configuré
new += line
if nextone:
nextone = False
if reste :
reste -= 1
elif mo and len(mo.group(1)) == 0:
# On a une ligne avec secours uniquement, c'est la prochaine ligne
# qui fait foi
nextone = True
# On a une ligne avec secours uniquement, c'est les n
# prochaines lignes qui font foi
try : reste = int(mo.group(2)[1:])
except : reste = 1
new += line
else :
# Ligne normale