Script en python

bansan Messages postés 125 Statut Membre -  
sebsauvage Messages postés 33284 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()
Configuration: Windows XP
Firefox 3.0.3

2 réponses

  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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