
shells, ils on rssh et ils le gardent darcs-hash:20041130000332-4ec08-c90da7b8b195f4a96cc86d2edc9f7bf987fe06b7.gz
49 lines
1.1 KiB
Python
Executable file
49 lines
1.1 KiB
Python
Executable file
#! /usr/bin/env python
|
|
# -*- coding: iso-8859-15 -*-
|
|
|
|
""" Changement du shell de l'utilisateur lancant le programme
|
|
DOIT ETRE LANCE PAR SUDO
|
|
|
|
Copyright (C) Frédéric Pauget
|
|
Licence : GPLv2
|
|
"""
|
|
import os, sys
|
|
|
|
from affich_tools import prompt
|
|
from ldap_crans import crans_ldap
|
|
|
|
db = crans_ldap()
|
|
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')
|
|
|
|
# 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 :
|
|
print 'Erreur fatale lors de la consultation de la base LDAP'
|
|
sys.exit(3)
|
|
|
|
adh = adh[0]
|
|
shell = prompt('Nouveau shell :')
|
|
fd=open('/etc/shells')
|
|
lines=fd.readlines()
|
|
fd.close()
|
|
|
|
if not shell in map(str.strip,lines) :
|
|
print 'Shell invalide. Les shells valides sont :'
|
|
print ''.join(lines[1:])
|
|
sys.exit(4)
|
|
|
|
adh.chsh(shell)
|
|
adh.save()
|
|
# A cause de nscd
|
|
print "La modification sera prise en compte dans l'heure suivante."
|