From 9485236f2fa63566e59a8d1944a11a990b2c1c30 Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Tue, 18 Aug 2015 02:01:34 +0200 Subject: [PATCH] Lc_ldap pour chsh --- gestion/chsh.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/gestion/chsh.py b/gestion/chsh.py index 160feff8..de376bcc 100755 --- a/gestion/chsh.py +++ b/gestion/chsh.py @@ -10,29 +10,28 @@ import os, sys from gestion.affich_tools import prompt -from gestion.ldap_crans import crans_ldap -db = crans_ldap() +from lc_ldap import shortcuts + +ldap = shortcuts.lc_ldap_admin() uid = os.getenv('SUDO_UID') if not uid : print "Impossible de déterminer l'utilisateur" sys.exit(1) -s = db.search('uidNumber=%s' % os.getenv('SUDO_UID'),'w') +adh = ldap.search(u'uidNumber=%s' % uid,mode='w') -# On vérifie que c'est pas un club -club = s['club'] -if len(club) == 1 : - print 'Pas de changement de shell pour les clubs' - sys.exit(2) - -# On regarde si on a des résultats dans les adhérents -adh = s['adherent'] -if len(adh) != 1 : +try: + adh = adh[0] +except IndexError: print 'Erreur fatale lors de la consultation de la base LDAP' sys.exit(3) -adh = adh[0] +# On vérifie que c'est pas un club +if unicode(adh.ldap_name)!=u"adherent": + print 'Pas de changement de shell pour les clubs' + sys.exit(2) + shell = prompt(u'Nouveau shell :') fd=open('/etc/shells') lines=fd.readlines() @@ -45,7 +44,9 @@ if not shell in shells: print '\n'.join(shells) sys.exit(4) -adh.chsh(shell) -adh.save() +with adh as ad: + ad['loginShell']=shell + ad.save() + # A cause de nscd print "La modification sera prise en compte dans l'heure suivante."