Script en python

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. Modérateur
    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
    1. Modérateur
      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