Script en python

bansan Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   -  
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Modérateur Dernière intervention   15 662
 
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   Statut Modérateur Dernière intervention   15 662
 
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