Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Liste des utilisateurs / Linux

12 réponses
Avatar
c-note
Bonjour,

je cherche un moyen "propre" d'obtenir la liste des utilisateurs (au
sens personne et non pas utilisateur apache, ntp, ...) d'une machine Linux.

En BASH, on peut faire :

cat /etc/passwd | grep "/home" | grep "/bin/bash" | awk -F: '{print $1}'

Passer par la commande système Python n'est pas à mon gout très élégant :-)

Y a t-il un moyen plus simple ?

Merci

2 réponses

1 2
Avatar
Alain BARTHE
c-note wrote:
Bonjour,

je cherche un moyen "propre" d'obtenir la liste des utilisateurs (au
sens personne et non pas utilisateur apache, ntp, ...) d'une machine Linux.

En BASH, on peut faire :

cat /etc/passwd | grep "/home" | grep "/bin/bash" | awk -F: '{print $1}'

Passer par la commande système Python n'est pas à mon gout très élégant :-)

Y a t-il un moyen plus simple ?

Merci


A noter qu'on peut sous Linux utiliser le module pwd, avec les fonctions
getpwall (), getpwnam () et getpuid()

Par exemple :

import pwd

users = [ u.pw_name for u in pdw.getpwall()
if u.pw_shell = "/bin/bash" and u.pw_dir.startswith ("/home") ]

Cela ne resout pas l'identification d'un utilisateur physique mais
simplifie la syntaxe.

Avatar
Alain BARTHE
Laurent wrote:
probablement que si le shell est /bin/false, c'est pas un utilisateur...
ça dépend : mes utilisateurs de mail sont en shell /bin/false... parce

que je ne veux pas qu'ils aient accès à un shell, justement..
Maintenant, sont-ce des utilisateurs au sens de /c-note/ ... c'est une
autre question :)


Sur une machine que j'administre, je mets manuellement l'adresse mail
des utilisateurs "humains" dans le champ gecos,
sous la forme

Ainsi, quand j'ai une intervention a faire sur la machine a une date
connue je fais une recherche du caractere @ sur le champ gecos et je
recupere la liste des adresses des utilisateurs auxquels je dois envoyer
un message d'avertissement.


C'est simple, pas standard, mais tres pratique.


1 2