Script en python

Fermé
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 - 15 oct. 2008 à 19:28
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 20 oct. 2008 à 14:59
Bonjour,je dispose de 2 fichiers :
Le fichier passwd et group qui se trouve sur linux

Ces fichiers sont des log où sont entreposés pleins d'informations espacés par des ":" avec entre autres dans le passwd le nom d'utilisateur, numero de groupe, shell..ect...

J'aimerais ecrire une fonction liste groupe dont le role est de retourner une liste contenant l'ensemble des groupes dont fait partie l'utilisateur


Voici mon debut de script, mon probleme etant que je n'arrive pas a faire en sorte que le script lise toutles lignes du fichier group et les comparer avec le fichier passwd pour ressortir les lignes recherchés

def liste_groupe(fpsswd,fgroup):


fichier = open("/root/olivier/passwd","r")
fgroup = open("/root/olivier/group","r")

for line in fichier:
guser=line.split(":")
# print guser
while fgroup.readline()!="":

print fgroup.readline()
A voir également:

2 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
20 oct. 2008 à 14:52
J'aimerais ecrire une fonction liste groupe dont le role est de retourner une liste contenant l'ensemble des groupes dont fait partie l'utilisateur

Et pourquoi pas utiliser la commande "groups" ?
C'est justement fait pour ça.

Le programme suivant lance la commande 'groups' et récupère le résultat:

#!/usr/bin/python
import subprocess

def groups(username):
    myprocess = subprocess.Popen(['groups',username,],stdout=subprocess.PIPE)
    (sout,serr) = myprocess.communicate()
    line = sout.split('\n')[0]
    return line.split(":")[1].strip().split(" ")

print groups('toto')


Ce qui donne:
['users','admins','vboxusers','fuse']
1
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
20 oct. 2008 à 14:59
Et la version sans le sous-processus:

#!/usr/bin/python

def groups(username):
    groups = []
    f = open("/etc/group","r")
    for ligne in f:
        items = ligne.split(":")
        if len(items)==4:
            if username in items[3].strip().split(','):
                groups.append( items[0] )
    f.close()
    return groups
    
print groups('toto') 
1