Récuperer la liste des utilisateurs et des groupes avec python 2.7.6

Bonjour,

Je suis sur python 2.7.6 pour des vieilles bécane.
Ma question est la suivant, j'ai besoin de récupérer dans deux listes python :
1) la liste des utilisateurs. -----> cat /etc/passwd | awk -F: '{print $ 1}'
2) la liste des groupes. -----> cat /etc/group | awk -F: '{print $ 1}'

J'ai essayé ceci
LISTE_UTILISATEURS = []
path = ("cat /etc/passwd | awk -F: '{print $ 1}'")

fichiers = os.popen(path)
for nom_fichier in fichiers:
print "nom_fichier : ", (nom_fichier)
LISTE_UTILISATEURS.append(nom_fichier)

print "LISTE_UTILISATEURS : ", LISTE_UTILISATEURS


Mais en retour, j'ai ceci :
des \n dans la liste python (voir tout en bas) ?

nom_fichier : root

nom_fichier : daemon

nom_fichier : bin

nom_fichier : sys

nom_fichier : sync

nom_fichier : games

nom_fichier : man

nom_fichier : lp

nom_fichier : mail

nom_fichier : news

nom_fichier : uucp

nom_fichier : proxy

nom_fichier : www-data

nom_fichier : backup

nom_fichier : list

nom_fichier : irc

nom_fichier : gnats

nom_fichier : nobody

nom_fichier : systemd-network

nom_fichier : systemd-resolve

nom_fichier : syslog

nom_fichier : messagebus

nom_fichier : _apt

nom_fichier : uuidd

nom_fichier : avahi-autoipd

nom_fichier : usbmux

nom_fichier : dnsmasq

nom_fichier : rtkit

nom_fichier : cups-pk-helper

nom_fichier : whoopsie

nom_fichier : kernoops

nom_fichier : saned

nom_fichier : pulse

nom_fichier : avahi

nom_fichier : colord

nom_fichier : hplip

nom_fichier : mpd

nom_fichier : sddm

nom_fichier : geoclue

nom_fichier : laurent

nom_fichier : nvidia-persistenced

nom_fichier : valerie

nom_fichier : festival

nom_fichier : speech-dispatcher

nom_fichier : timidity

nom_fichier : clamav

nom_fichier : minidlna

nom_fichier : sshd

nom_fichier : postfix

nom_fichier : leroc

nom_fichier : laurent1

LISTE_UTILISATEURS : ['root\n', 'daemon\n', 'bin\n', 'sys\n', 'sync\n', 'games\n', 'man\n', 'lp\n', 'mail\n', 'news\n', 'uucp\n', 'proxy\n', 'www-data\n', 'backup\n', 'list\n', 'irc\n', 'gnats\n', 'nobody\n', 'systemd-network\n', 'systemd-resolve\n', 'syslog\n', 'messagebus\n', '_apt\n', 'uuidd\n', 'avahi-autoipd\n', 'usbmux\n', 'dnsmasq\n', 'rtkit\n', 'cups-pk-helper\n', 'whoopsie\n', 'kernoops\n', 'saned\n', 'pulse\n', 'avahi\n', 'colord\n', 'hplip\n', 'mpd\n', 'sddm\n', 'geoclue\n', 'laurent\n', 'nvidia-persistenced\n', 'valerie\n', 'festival\n', 'speech-dispatcher\n', 'timidity\n', 'clamav\n', 'minidlna\n', 'sshd\n', 'postfix\n', 'leroc\n', 'laurent1\n']


Comment y remédier ?
Merci.

Configuration: Linux / Firefox 72.0

1 réponse

  1. Bonjour,

    Voila la solution

    def Liste_utilisateurs():
    CHEMIN_LISTE_UTILISATEURS = ("/etc/passwd")
    LISTE_UTILISATEURS = []
    with open(CHEMIN_LISTE_UTILISATEURS, "r") as f:
    for line in f.readlines():
    LISTE_UTILISATEURS.append(line.split(":")[0])
    LISTE_UTILISATEURS.sort()
    print
    print "Liste utilisateurs : ", CHEMIN_LISTE_UTILISATEURS
    for item in LISTE_UTILISATEURS:
    print("-- " + item)

    def Liste_groupes():
    CHEMIN_LISTE_GROUPES = ("/etc/group")
    LISTE_GROUPES = []
    with open(CHEMIN_LISTE_GROUPES, "r") as f:
    for line in f.readlines():
    LISTE_GROUPES.append(line.split(":")[0])
    LISTE_GROUPES.sort()
    print
    print "Liste des groupes : ", CHEMIN_LISTE_GROUPES
    for item in LISTE_GROUPES:
    print("- " + item)

    Liste_utilisateurs()
    Liste_groupes()
    0
    1. Bonjour,

      Une meilleure solution est d'utiliser le module csv sans passer par une commande système.

      import csv
      
      with open("/etc/passwd") as f:
          reader = csv.reader(f, delimiter=':')
          users = [row[0] for row in reader]
          print(users)


      Faire de même avec le fichier des groupes.
      0