Commit a1bf0a45 authored by Pierre-Elliott Bécue's avatar Pierre-Elliott Bécue

[scripts] Going to utf-8

parent c4a19a88
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
# Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
# Copyright (C) Stéphane Glondu, Alexandre Bos, Michel Blockelet
# Licence : GPLv2
u"""Ce script permet au secrétaire de repérer plus facilement les membres
actifs qui n'ont pas signé la charte du même nom.
u"""Ce script permet au secrétaire de repérer plus facilement les membres
actifs qui n'ont pas signé la charte du même nom.
Utilisation :
%(prog)s {liste|modif|spam} [--debug <adresse>]
L'unique option est :
--debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt
--debug <adresse> envoyer tous les mails à l'<adresse> indiquée, plutôt
qu'aux vrais destinataires
Les commandes sont :
* liste énumérer les membres n'ayant pas signé la charte
* modif modifier les membres actifs n'ayant pas signé la charte
* liste énumérer les membres n'ayant pas signé la charte
* modif modifier les membres actifs n'ayant pas signé la charte
* spam envoie des mails de rappel pour les chartes
"""
......@@ -29,7 +29,7 @@ from email_tools import send_email, parse_mail_template
# Fonctions d'affichage
from affich_tools import coul, tableau, prompt, cprint
# Importation de la base de données
# Importation de la base de données
from ldap_crans import crans_ldap, ann_scol
db = crans_ldap()
......@@ -44,12 +44,12 @@ if __name__ == '__main__':
sys.argv.pop()
if debug:
cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug)
cprint(u'Mode debug, tous les mails seront envoyés à %s.' % debug)
def _controle_interactif_adherents(liste):
"""
Contrôle interactif des adhérents de la liste.
Contrôle interactif des adhérents de la liste.
Retourne (nb_OK, nb_pas_OK).
"""
......@@ -57,10 +57,10 @@ def _controle_interactif_adherents(liste):
if restant == 0:
return 0, 0
cprint(u'\nContrôle des membre actifs' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u'\nContrôle des membre actifs' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u"")
nb = 0
......@@ -81,7 +81,7 @@ def _controle_interactif_adherents(liste):
modifiable.charteMA(True)
cprint(modifiable.save())
else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
elif ok == 'n':
if a.charteMA() == True:
modifiable = db.search('aid=%s' % a.id(), 'w')['adherent'][0]
......@@ -89,16 +89,16 @@ def _controle_interactif_adherents(liste):
modifiable.charteMA(False)
cprint(modifiable.save())
else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
else:
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
break
return nb, len(liste)-nb
def liste_charte_nok():
"""Retourne la liste des membres actifs qui n'ont pas signé la charte."""
"""Retourne la liste des membres actifs qui n'ont pas signé la charte."""
liste_actifs = db.search('droits=*')['adherent']
liste_nok = []
for adh in liste_actifs:
......@@ -110,25 +110,25 @@ def liste_charte_nok():
def controle_interactif():
"""
Procédure interactive de contrôle des chartes de membres actifs.
Procédure interactive de contrôle des chartes de membres actifs.
"""
todo_list = liste_charte_nok()
# Tri de la liste des adhérents selon nom, prénom
# Ça peut se faire plus facilement en Python 2.4 avec l'argument key
# Tri de la liste des adhérents selon nom, prénom
# Ça peut se faire plus facilement en Python 2.4 avec l'argument key
todo_list.sort(lambda x, y: cmp((x.nom(), x.prenom()), (y.nom(), y.prenom())))
# Zou !
ok, nok = _controle_interactif_adherents(todo_list)
cprint(u'\nRécapitulatif des nouveaux contrôles :', 'violet')
cprint(u'\nRécapitulatif des nouveaux contrôles :', 'violet')
liste = [[u'membres actifs', str(ok), str(nok)]]
cprint(tableau(liste,
titre = [u'Catégorie', u'OK', u'pas OK'],
titre = [u'Catégorie', u'OK', u'pas OK'],
largeur = [15, 10, 10]))
def spammer():
# On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier
# On envoie un mail à chacun des membres actifs qui n'ont pas donné le papier
todo_list = liste_charte_nok()
if todo_list:
......@@ -144,10 +144,10 @@ def spammer():
print to
if not debug:
data = config.mails.txt_charte_MA % {'From' : u"ca@crans.org", 'To' : to}
connexion.sendmail("ca@crans.org",to,data.encode('iso-8859-15'))
connexion.sendmail("ca@crans.org",to,data.encode('utf-8'))
def __usage(message=None):
""" Comment ça marche ? """
""" Comment ça marche ? """
cprint(__doc__ % { 'prog': sys.argv[0] })
if message:
cprint(message)
......@@ -161,7 +161,7 @@ if __name__ == '__main__' :
elif sys.argv[1] == 'liste':
if len(sys.argv) != 2:
__usage(u'Mauvaise utilisation de liste')
print "Liste des membres actifs n'ayant pas signé la charte :"
print "Liste des membres actifs n'ayant pas signé la charte :"
for adh in liste_charte_nok():
print adh.Nom()
elif sys.argv[1] == 'modif':
......
This diff is collapsed.
......@@ -47,7 +47,7 @@ if u'Tresorier' not in cableur.droits():
dlg = dialog.Dialog()
dlg.setBackgroundTitle('Tresorerie')
encoding = sys.stdin.encoding or 'ISO-8859-15'
encoding = sys.stdin.encoding or 'UTF-8'
########################################################################
# Retrait des accents
......
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
import sys
# Copyright (C) Stéphane Glondu, Alexandre Bos
# Copyright (C) Stéphane Glondu, Alexandre Bos
# Licence : GPLv2
__doc__ = u"""Ce script permet de faire le menages parmis les câbleurs qui ne
sont plus sur le campus, ie ceux qui ne sont plus à jour de cotisation.
__doc__ = u"""Ce script permet de faire le menages parmis les câbleurs qui ne
sont plus sur le campus, ie ceux qui ne sont plus à jour de cotisation.
Utilisation :
%(prog)s {lister|radier} [--debug <adresse>]
Les commandes sont :
* lister afficher la liste des câbleurs succeptibles d'être
radiés
* lister afficher la liste des câbleurs succeptibles d'être
radiés
* radier selectionner, parmis eux, les cableurs que l'on
souhaite radier
"""
......@@ -28,23 +28,23 @@ from email_tools import send_email, parse_mail_template
# Fonctions d'affichage
from affich_tools import coul, tableau, prompt, cprint
# Importation de la base de données
# Importation de la base de données
from ldap_crans import crans_ldap, ann_scol
db = crans_ldap()
def _controle_interactif_adherents(liste):
"""
Demande ce qu'il faut faire à chaque fois
Demande ce qu'il faut faire à chaque fois
"""
restant = len(liste)
if restant == 0:
return 0, 0
cprint(u'\nRadiation des câbleurs fantômes' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u'\nRadiation des câbleurs fantômes' , 'cyan')
cprint(u"Pour chaque entrée, il faut taper 'o' ou 'n' (défaut=n).")
cprint(u"Une autre réponse entraîne l'interruption du processus.")
cprint(u"Le format est [nb_restant] Nom, Prénom (aid).")
cprint(u"")
nb = 0
......@@ -58,9 +58,9 @@ def _controle_interactif_adherents(liste):
modifiable.droits([])
cprint(modifiable.save())
else:
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
cprint(u'Adhérent %s locké, réessayer plus tard' % modifiable.Nom(), 'rouge')
elif ok != 'n':
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
cprint(u'Arrêt du contrôle %s des membres actifs' % explicite, 'rouge')
break
def candidats():
......@@ -74,10 +74,10 @@ def candidats():
def lister():
"""
Afficher les câbleurs fantômes potentiels.
Afficher les câbleurs fantômes potentiels.
"""
todo_list = candidats()
print "Liste des câbleur dont la cotisation n'est pas à jour."
print "Liste des câbleur dont la cotisation n'est pas à jour."
print
for adh in todo_list:
print adh.prenom() + " " + adh.nom()
......@@ -86,7 +86,7 @@ def lister():
def controle_interactif():
"""
Procédure interactive de radiations des câbleurs fantômes.
Procédure interactive de radiations des câbleurs fantômes.
"""
todo_list = candidats()
......@@ -94,7 +94,7 @@ def controle_interactif():
_controle_interactif_adherents(todo_list)
def __usage(message=None):
""" Comment ça marche ? """
""" Comment ça marche ? """
cprint(__doc__ % { 'prog': sys.argv[0] })
if message:
......
......@@ -18,11 +18,11 @@ except:
pass
if not encoding:
encoding = sys.stdin.encoding or "ISO-8859-15"
encoding = sys.stdin.encoding or 'UTF-8'
# Si aucune locale n'est définie, on se met en ISO-8859-15
# Si aucune locale n'est définie, on se met en...
if encoding == "ANSI_X3.4-1968":
encoding = "ISO-8859-15"
encoding = 'UTF-8'
if 'TERM' in os.environ and os.environ['TERM'] != 'unknown':
el = subprocess.Popen('tput cr ; tput el', shell=True, stdout=subprocess.PIPE).stdout.read()
......@@ -115,7 +115,7 @@ def to_unicode(txt, enc=encoding):
return txt.decode("UTF-8")
except:
# Sinon c'est surement de l'iso
return txt.decode("ISO8859-15")
return txt.decode("UTF-8")
def to_encoding(txt, enc=encoding):
return to_unicode(txt).encode(enc, 'ignore')
......
......@@ -6,7 +6,7 @@
#: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p
avertissement = u"""From: %(From)s
To: %(To)s
Subject: =?iso-8859-1?Q?D=E9tection?= de p2p sur la machine %(hostname)s
Subject: =?utf-8?q?D=C3=A9tection?= de p2p sur la machine %(hostname)s
Content-Type: text/plain; charset="utf-8"
La machine %(hostname)s a été déconnectée pendant 24h pour
......@@ -20,7 +20,7 @@ Message créé par deconnexion.py"""
#: Envoyé à l'adhérent en cas de déconnexion pour p2p
deconnexion = u"""From: %(From)s
To: %(To)s
Subject: Avis de =?iso-8859-15?Q?D=E9connexion?=
Subject: Avis de =?utf-8?q?D=C3=A9connexion?=
Content-Type: text/plain; charset="utf-8"
Bonjour,
......@@ -81,7 +81,7 @@ Disconnect Team"""
#: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p plusieurs fois
message_disconnect_multi = u"""From: %(from)s
To: %(to)s
Subject: %(proprio)s a =?iso-8859-15?Q?=E9t=E9=20d=E9connect=E9?= %(nbdeco)d fois pour p2p en un an !
Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_d=C3=A9connect=C3=A9?= %(nbdeco)d fois pour p2p en un an !
Content-Type: text/plain; charset="utf-8"
L'adhérent %(proprio)s a été déconnecté %(nbdeco)d fois pour p2p en un an !
......@@ -90,4 +90,4 @@ Le PS a été généré et se trouve sur zamok :
%(ps)s
--\u0020
Message créé par deconnexion.py"""
\ No newline at end of file
Message créé par deconnexion.py"""
......@@ -124,7 +124,7 @@ Message créé par deconnexion.py"""
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard
message_disconnect_hard = u"""From: %(from)s
To: %(to)s
Subject: %(proprio)s a =?iso-8859-1?Q?=E9t=E9=20brid=E9?=
Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_brid=C3=A9?=
Content-Type: text/plain; charset="utf-8"
%(proprio)s (%(id)s) a été limité en débit montant du fait d'un
......@@ -141,7 +141,7 @@ Message créé par deconnexion.py"""
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard plusieurs fois
message_disconnect_multi = u"""From: %(from)s
To: %(to)s
Subject: %(proprio)s a =?iso-8859-1?Q?=E9t=E9=20brid=E9?=
Subject: %(proprio)s a =?utf-8?q?=C3=A9t=C3=A9_brid=C3=A9?=
%(nbdeco)d fois pour upload en un mois !
Content-Type: text/plain; charset="utf-8"
......
......@@ -14,7 +14,7 @@ format_sender et send_email adaptés depuis /usr/scripts/impression/crans_backen
import re
def format_sender(sender, header_charset='ISO-8859-15'):
def format_sender(sender, header_charset='utf-8'):
"""
Check and format sender for header.
"""
......@@ -42,8 +42,8 @@ def send_email(sender, recipient, subject, body, server='localhost', cc=None, de
Only the real name part of sender and recipient addresses may contain
non-ASCII characters. The email will be properly MIME encoded.
The charset of the email will be the first one out of US-ASCII, ISO-8859-15
and UTF-8 that can represent all the characters occurring in the email.
The charset of the email will be the first one out of US-ASCII or UTF-8
that can represent all the characters occurring in the email.
Argument server maybe a string, indicating the name of the SMTP server, or
directly an instance of smtplib.SMTP.
......@@ -57,10 +57,10 @@ def send_email(sender, recipient, subject, body, server='localhost', cc=None, de
# Header class is smart enough to try US-ASCII, then the charset we
# provide, then fall back to UTF-8.
header_charset = 'ISO-8859-15'
header_charset = 'UTF-8'
# We must choose the body charset manually
for body_charset in 'US-ASCII', 'ISO-8859-15', 'UTF-8':
for body_charset in 'US-ASCII', 'UTF-8':
try:
body.encode(body_charset)
except UnicodeError:
......
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
""" Package pour la génération des fichiers de conf
""" Package pour la génération des fichiers de conf
Copyright (C) Frédéric Pauget
Copyright (C) Frédéric Pauget
Licence : GPLv2
"""
......@@ -18,11 +18,11 @@ import config
from tempfile import NamedTemporaryFile
class gen_config :
""" Base pour toutes les classes de génération de fichiers de conf """
""" Base pour toutes les classes de génération de fichiers de conf """
base = None
debug = 0
_locked = 0
__restore={} # pour restorer la config d'origine en cas d'erreur de génération
__restore={} # pour restorer la config d'origine en cas d'erreur de génération
def lockname(self):
"""Nom du lock"""
......@@ -39,7 +39,7 @@ class gen_config :
if self._locked : remove_lock(self.lockname())
def __del__(self) :
# Au cas où...
# Au cas où...
self.unlock()
def _restore(self) :
......@@ -54,12 +54,12 @@ class gen_config :
os.system('cp -f %s %s' % ( f.name, nom ) )
def _open_conf(self,nom,comment=None) :
""" Créé un fichier
si comment est fourni, insère une entète qui utilisera le caractère
""" Créé un fichier
si comment est fourni, insère une entète qui utilisera le caractère
de commentaire fourni
copie l'ancien fichier dans un fichier temporaire pour permettre
la restauration en cas d'échec de la configuration
la restauration en cas d'échec de la configuration
Retourne le descripteur du fichier """
......@@ -89,15 +89,15 @@ class gen_config :
return fd
def gen_conf(self) :
""" Génération des fichiers de conf, retourne False si erreur """
""" Génération des fichiers de conf, retourne False si erreur """
self.lock()
self.anim = anim('\tgénération fichiers')
self.anim = anim('\tgénération fichiers')
try :
warn = self._gen()
if warn :
self.anim.reinit()
print WARNING
if self.debug : sys.stderr.write(warn.encode("ISO-8859-15"))
if self.debug : sys.stderr.write(warn.encode("UTF-8"))
else :
self.anim.reinit()
print OK
......@@ -110,7 +110,7 @@ class gen_config :
return False
def restart(self) :
""" Redémarrage du service concerné """
""" Redémarrage du service concerné """
if not self.restart_cmd : return
self.lock()
self.anim = anim('\trestart')
......@@ -127,8 +127,8 @@ class gen_config :
self.unlock()
def reconfigure(self) :
""" Génère les fichiers puis redémarre le service
si la génération c'est bien passée """
""" Génère les fichiers puis redémarre le service
si la génération c'est bien passée """
cprint(u'Reconfiguration %s :' % self.__str__(), 'gras')
if self.gen_conf() :
return self.restart()
......
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
# Copyright (C) Frdric Pauget
# Copyright (C) Frédéric Pauget
# Licence : GPLv2
import smtplib, sys, commands, shutil, os, traceback
......@@ -18,7 +18,7 @@ try:
from Mailman.UserDesc import UserDesc
from Mailman.Errors import MMAlreadyAMember
except:
# Machine sans mailman, les ML ne seront pas reconfigures
# Machine sans mailman, les ML ne seront pas reconfigurées
pass
......@@ -101,7 +101,7 @@ class home:
self.args = args
def reconfigure(self):
cprint(u'Cration home', 'gras')
cprint(u'Création home', 'gras')
for args in self.args:
anim('\t' + args)
try:
......@@ -116,11 +116,11 @@ class home:
os.mkdir(home, 0755)
os.chown(home, int(uid), config.gid)
elif os.path.isdir(home):
# Il y un rpertoire existant
# Il y un répertoire existant
# Bon UID ?
stat = os.stat(home)
if stat[4] != int(uid) or stat[5] != config.gid:
# Le home n'est pas pas la bonne personne
# Le home n'est pas pas à la bonne personne
raise OSError('home existant')
### Quota
......@@ -226,7 +226,7 @@ class ML_ens:
try:
mlist.ApprovedAddMember(UserDesc(mail))
except MMAlreadyAMember:
cprint(u"DJ INSCRIT", "jaune")
cprint(u"DÉJÀ INSCRIT", "jaune")
except:
print ERREUR
if self.debug:
......
This diff is collapsed.
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
""" Gnration de la configuration pour le dhcp
""" Génération de la configuration pour le dhcp
Copyright (C) Frdric Pauget
Copyright (C) Frédéric Pauget
Licence : GPLv2
"""
......@@ -12,22 +12,22 @@ from gen_confs import gen_config
from ldap_crans import hostname
class dhcp(gen_config) :
""" Gnration du fichier de configuration pour dhcpd (DHCPD_CONF)
Le fichier comporte une partie par rseau servi, chaque rseau
servi doit tre une clef du dictionnaire reseaux, la valeur correspondante
est une chaine dcrivant les options spcifiques ce rseau.
""" Génération du fichier de configuration pour dhcpd (DHCPD_CONF)
Le fichier comporte une partie par réseau servi, chaque réseau
servi doit être une clef du dictionnaire reseaux, la valeur correspondante
est une chaine décrivant les options spécifiques à ce réseau.
Les options communes sont celles de base_dhcp.
Chaque machines possde ensuite une entre de la forme de host_template
Chaque machines possède ensuite une entrée de la forme de host_template
"""
######################################PARTIE DE CONFIGURATION
# Fichier cire
# Fichier à écire
if hostname == 'ragnarok' :
DHCPD_CONF='/etc/dhcpd.conf'
else :
DHCPD_CONF = '/etc/dhcp3/dhcpd.conf'
# Hotspot ENS plus utilis...
# Hotspot ENS plus utilisé...
# elif hostname == 'ragnarok' :
# On rajoute les IP dynamiques
# base_conf = """
......@@ -47,7 +47,7 @@ class dhcp(gen_config) :
#"""
elif hostname == 'sable':
# Options communes toutes les rseaux servis
# Options communes à toutes les réseaux servis
base_conf="""
# VLan accueil
subnet 10.51.0.0 netmask 255.255.0.0 {
......@@ -68,7 +68,7 @@ subnet 10.52.0.0 netmask 255.255.0.0 {
else :
base_conf = ''
# Rseaux servis avec leurs options spcifiques
# Réseaux servis avec leurs options spécifiques
# if hostname == 'zamok':
# reseaux = { '138.231.136.0/21' :
#"""option routers 138.231.136.4;
......@@ -110,7 +110,7 @@ subnet 10.52.0.0 netmask 255.255.0.0 {
option routers 10.42.0.1;
option domain-name-servers 10.42.0.1;""" }
# Options communes toutes les rseaux servis
# Options communes à toutes les réseaux servis
base_dhcp="""
subnet %(network)s netmask %(netmask)s {
default-lease-time 86400;
......@@ -153,9 +153,9 @@ subnet %(network)s netmask %(netmask)s {
}
"""
### Verbosit
# Si =1 ralera (chaine warnings) si machines hors zone trouve
# Si =0 ralera seulement si rseau vide
### Verbosité
# Si =1 ralera (chaine warnings) si machines hors zone trouvée
# Si =0 ralera seulement si réseau vide
verbose = 1
# if hostname == 'zamok':
......@@ -195,7 +195,7 @@ subnet %(network)s netmask %(netmask)s {
fd.write(self.base_conf)
for net, options in self.reseaux.items() :
if not hosts.has_key(net) :
warnings += u'Rseau %s ignor : aucune machine servir\n' % net
warnings += u'Réseau %s ignoré : aucune machine à servir\n' % net
continue
d = param(net)
d['OPTIONS_RESEAU'] = options
......
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
""" Gnration de la configuration pour le dhcp
""" Génération de la configuration pour le dhcp
Copyright (C) Frdric Pauget
Copyright (C) Frédéric Pauget
Licence : GPLv2
"""
import os
......@@ -63,15 +63,15 @@ class dydhcp:
conn.close()
class dhcp(gen_config) :
""" Gnration du fichier de dclaration des hosts.
Chaque rseau servi doit tre une clef du dictionnaire reseaux,
""" Génération du fichier de déclaration des hosts.
Chaque réseau servi doit être une clef du dictionnaire reseaux,
la valeur correspondante est une chaine contenant le nom du fichier
associ ce rseau.
associé à ce réseau.
Chaque machine possde ensuite une entre de la forme de host_template.
Chaque machine possède ensuite une entrée de la forme de host_template.
"""
######################################PARTIE DE CONFIGURATION
# Fichier cire
# Fichier à écire
if hostname == 'sable':
restart_cmd = '/etc/init.d/isc-dhcp-server restart'
reseaux = { '138.231.136.0/21' : '/etc/dhcp3/generated/adherents.liste',
......@@ -114,9 +114,9 @@ class dhcp(gen_config) :
}
"""
### Verbosit
# Si =1 ralera (chaine warnings) si machines hors zone trouve
# Si =0 ralera seulement si rseau vide
### Verbosité
# Si =1 ralera (chaine warnings) si machines hors zone trouvée
# Si =0 ralera seulement si réseau vide
verbose = 1
######################################FIN PARTIE DE CONFIGURATION
......@@ -145,7 +145,7 @@ class dhcp(gen_config) :
def _gen(self) :
"""Construction de la liste des machines appartenant un rseau
"""Construction de la liste des machines appartenant à un réseau
"""
warnings = ''
......
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# -*- coding: utf-8 -*-
# Copyright (C) Frdric Pauget
# Copyright (C) Frédéric Pauget
# Licence : GPLv2
#"""Ce script permet de lancer la reconfiguration des divers services
......@@ -9,8 +9,8 @@
#Usage: %(prog)s options
#Les options possibles sont :
#\t%(options)s
#Les options avec = doivent tre suivies d'un argument. Plusieurs
#arguments peuvent tre founis pour une mme option, les sparer par &
#Les options avec = doivent être suivies d'un argument. Plusieurs
#arguments peuvent être founis pour une même option, les séparer par &
#"""
import sys, signal, os, getopt
......@@ -68,19 +68,19 @@ class base_reconfigure:
def __init__(self, to_do=None):
# On vrifie que l'on est root
# On vérifie que l'on est root
if os.getuid() != 0:
sys.stderr.write("Il faut tre root\n")
sys.stderr.write("Il faut être root\n")
sys.exit(1)
if not to_do:
if debug:
print 'Lecture des services redmarrer dans la base LDAP...'
print 'Lecture des services à redémarrer dans la base LDAP...'
auto = True
to_do = {}
# Cration de la liste de ce qu'il y a faire
# Création de la liste de ce qu'il y a à faire
for serv in db.services_to_restart():
# Services spciaux portant sur plusieurs machines
# Services spéciaux portant sur plusieurs machines
to_add = self.__service_develop.get(serv.nom, [])
if to_add:
for nom in to_add:
......@@ -97,13 +97,13 @@ class base_reconfigure:
else:
auto = False
if debug:
print 'Services redmarrer imposs (non lecture de la base LDAP)'
print 'Services à redémarrer imposés (non lecture de la base LDAP)'
for serv, args in to_do.items():
# Au cas o le service porte sur plusieurs machines
# Au cas où le service porte sur plusieurs machines
service = serv.replace('%s-' % hostname, '')
if hasattr(self, service):
# Le service est reconfigurer sur cette machine
# Le service est à reconfigurer sur cette machine
db.services_to_restart('-%s' % serv)
try:
m = getattr(self, service)
......@@ -125,17 +125,17 @@ class base_reconfigure:
if debug:
reste = db.services_to_restart()
if reste:
print "Reste faire :"
print "Reste à faire :"
for s in reste:
try:
print '\t%s' % s
except UnicodeDecodeError:
print '\t%s: non imprimable' % s.nom
else:
print "Plus rien faire"
print "Plus rien à faire"
def _machines(self):
""" Retourne les machines de la base tant ' jour' """
""" Retourne les machines de la base étant 'à jour' """
return db.all_machines(graphic=True)
def _do(self, service, machines=None):
......@@ -180,8 +180,8 @@ class redisdead(base_reconfigure):
def mail_modif(self, trucs):
"""
trucs est une liste de recherches effectuer dans la base
l'affichage des rsultats formera le corps du mail
trucs est une liste de recherches à effectuer dans la base