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

Signaler
Messages postés
703
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
10 février 2020
-
 trifou -
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

Messages postés
703
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
10 février 2020
9
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()
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.