prog en python

prog en python - Python - Programmation

Marsh Posté le 05-10-2008 à 14:12:44    

Bonjour,
J'ai 2 fichiers sous linux du nom de passwd et group
 
J'aimerais ecrire une fonction en python dont le role est de retourner la liste contenant l'ensemble des groupes dont fait partie l'utilisateur
 
voila ce que j'ai commencé mais a priori il manque quelque chose pour que ca marche
Si qqun pouvait m'eclairer
Merci
 
 
 
try:
fichier = open("/root/olivier/passwd","r" )
file_group = open("/root/olivier/group","r" )
 
except IOError:
print "fichier introuvable"
 
else:
try:
for line in fichier :
for ligne in file_group:
utilisateur = line.split(":" )
group = ligne.split(":" )
 
print utilisateur
# if utilisateur[4]==group[3]:
 
except IOError:
print "lecture impossible"
 
 
file_group.close()
fichier.close()

Reply

Marsh Posté le 05-10-2008 à 14:12:44   

Reply

Marsh Posté le 05-10-2008 à 16:15:34    

Avec les balises qui vont bien, ça donnerait :
 

Code :
  1. try:
  2. fichier = open("/root/olivier/passwd","r" )
  3. file_group = open("/root/olivier/group","r" )
  4. except IOError:
  5. print "fichier introuvable"
  6. else:
  7.   try:
  8.     for line in fichier :
  9.         for ligne in file_group:
  10.             utilisateur = line.split(":" )
  11.             group = ligne.split(":" )
  12.             print utilisateur
  13.             # if utilisateur[4]==group[3]:
  14.   except IOError:
  15.     print "lecture impossible"
  16.     file_group.close()
  17.     fichier.close()


 
Quelque chose dans ce genre ? Et peux-tu nous dire sur quoi tu butes ? Un message d'erreur, peut-être ?


Message édité par suizokukan le 05-10-2008 à 16:27:16

---------------
rule #1 : trust the python
Reply

Marsh Posté le 09-10-2008 à 13:27:20    

Déjà je ne comprends pas pourquoi il prend l'utilisateur dans la boucle ligne au lieu de le prendre dans la boucle du dessus.
 
Sinon le petit prog est visiblement incomplet. Pourquoi ?
Quel est le format des fichiers en entrée ? (ça doit être connu mais pas par moi).
Oui il manque quelque-chose :
Pourquoi le test est en commentaire ?
Pourquoi on ne fait rien s'il y a égalité ? (pas d'intérieur du test)

Reply

Marsh Posté le 09-10-2008 à 14:57:59    

Perso je voudrais savoir pourquoi il s'emmerde à manipuler directement passwd et group alors qu'il a le module grp qui lui donne une liste de (group_name, group_pwd, group_id, [group_members]) (via getgrall()) et si il en a vraiment besoin pwd qui s'interface sur passwd.

 

Non parce que trouver les groupes auquel appartient un user (quand on a son username), ça donne ça:

Code :
  1. from grp import getgrall
  2.  
  3. username = 'whatever'
  4. print [groupname for (groupname, _, _, users) in getgrall() if username in users]


nb: j'ai pas besoin du groupid ou du pwd, donc je les colle dans _ pour m'en débarasser, Erlang-style


Message édité par masklinn le 09-10-2008 à 14:58:46

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed