78 lines
2.2 KiB
Python
Executable file
78 lines
2.2 KiB
Python
Executable file
#! /usr/bin/env python
|
|
# -*- coding: iso-8859-15 -*-
|
|
|
|
# Fichiers à modifier et chaine indiquant un commentaire dans ceux-ci
|
|
fichiers = { '/etc/bind/named.conf.options' : '//' ,
|
|
'/etc/postfix/main.cf' : '#' }
|
|
|
|
import sys, sre
|
|
|
|
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 """
|
|
|
|
signal = '#POUR SECOURS'
|
|
l = len(signal)
|
|
|
|
fd = open(file)
|
|
line = fd.readline()
|
|
new = ''
|
|
nextone = False # La prochaine ligne est-elle a triter ? non
|
|
while line :
|
|
l = line.rstrip()
|
|
mo = sre.match('^(.*)'+signal+'$',l)
|
|
if (mo and len(mo.group(1)) > 1) or nextone:
|
|
# Ligne pour secours
|
|
if not sre.match('^' + comment,l) and not secours:
|
|
# On est actuellement configuré en secours
|
|
# Il faut passer en normal
|
|
new += comment + line
|
|
elif sre.match('^' + comment,l) and secours :
|
|
# On est actuellement configuré en normal
|
|
# Il faut passer en secours
|
|
new += line.replace(comment,'',1)
|
|
else :
|
|
# Rien à faire, on est bien configuré
|
|
new += line
|
|
if nextone:
|
|
nextone = False
|
|
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
|
|
new += line
|
|
else :
|
|
# Ligne normale
|
|
new += line
|
|
|
|
line = fd.readline()
|
|
|
|
fd.close()
|
|
|
|
# Ecriture de la nouvelle version
|
|
fd = open(file,'w')
|
|
fd.write(new)
|
|
fd.close()
|
|
|
|
|
|
def usage() :
|
|
print 'Usage : %s 0 pour reconfigurer les services locaux en normal' % sys.argv[0]
|
|
print ' %s 1 pour reconfigurer les services locaux en secours' % sys.argv[0]
|
|
print 'Fichiers modifiés par le changement de mode : \n\t', '\n\t'.join(fichiers.keys())
|
|
|
|
if __name__ == '__main__' :
|
|
if len(sys.argv) != 2 :
|
|
usage()
|
|
else :
|
|
mode = sys.argv[1]
|
|
if mode not in '01' :
|
|
usage()
|
|
else :
|
|
mode = int(mode)
|
|
for f, c in fichiers.items() :
|
|
try :
|
|
print 'Edition de %s' % f
|
|
edit(f,c,mode)
|
|
except :
|
|
import traceback
|
|
traceback.print_exc()
|