Lc_ldap pour chsh

This commit is contained in:
Gabriel Detraz 2015-08-18 02:01:34 +02:00
parent 7e072aca3c
commit 9485236f2f

View file

@ -10,29 +10,28 @@
import os, sys import os, sys
from gestion.affich_tools import prompt 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') uid = os.getenv('SUDO_UID')
if not uid : if not uid :
print "Impossible de déterminer l'utilisateur" print "Impossible de déterminer l'utilisateur"
sys.exit(1) 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 try:
club = s['club'] adh = adh[0]
if len(club) == 1 : except IndexError:
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 :
print 'Erreur fatale lors de la consultation de la base LDAP' print 'Erreur fatale lors de la consultation de la base LDAP'
sys.exit(3) 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 :') shell = prompt(u'Nouveau shell :')
fd=open('/etc/shells') fd=open('/etc/shells')
lines=fd.readlines() lines=fd.readlines()
@ -45,7 +44,9 @@ if not shell in shells:
print '\n'.join(shells) print '\n'.join(shells)
sys.exit(4) sys.exit(4)
adh.chsh(shell) with adh as ad:
adh.save() ad['loginShell']=shell
ad.save()
# A cause de nscd # A cause de nscd
print "La modification sera prise en compte dans l'heure suivante." print "La modification sera prise en compte dans l'heure suivante."