Liste des utilisateurs / Linux

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain BARTHE
Le #6537321
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


for line in open ("/etc/passwd", "r").readlines ():

user, id, gid, pass, name, home, shell = line.strip().split (":")

if (shell == "/bin/bash"): print user

Alain BARTHE
Le #6537311
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


Pardon, j'avais pas tout lu :

for line in open ("/etc/passwd", "r").readlines ():

user, id, gid, pass, name, home, shell = line.strip().split (":")

if shell == "/bin/bash" and home.startswith ("/home"):
print user

c-note
Le #6538211
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


Pardon, j'avais pas tout lu :

for line in open ("/etc/passwd", "r").readlines ():

user, id, gid, pass, name, home, shell = line.strip().split (":")

if shell == "/bin/bash" and home.startswith ("/home"):
print user


Merci de ta reponse, ca me va à merveille :-)


yves
Le #6539581
Le Fri, 02 May 2008 15:24:03 +0200, Alain BARTHE a écrit:

Bonjour,

for line in open ("/etc/passwd", "r").readlines ():

user, id, gid, pass, name, home, shell = line.strip().split (":")

if shell == "/bin/bash" and home.startswith ("/home"):
print user


A noter que le .readlines () n'est plus nécessaire (depuis Python version
xx ?)
Et qu'on ne peut pas utiliser "pass" (quel est le terme: mot réservé ?
mot clé du langage ?)

Version modifiée:

for line in open ("/etc/passwd", "r"):
user, id, gid, password, name, home, shell = line.strip().split (":")
if shell == "/bin/bash" and home.startswith ("/home"):
print user





--
Yves

Thierry B.
Le #6540041
--{ Alain BARTHE a plopé ceci: }--


if shell == "/bin/bash" and home.startswith ("/home"):
print user


Attention, tous les yusers n'ont pas forcément Bash,
et tous les yusers ne sont pas forcément dans /home !

Souvent, on les reconnait plutôt parce que leur uid
est supérieur à une certaine valeur (1000 ?)


--
"Rébarbatique" : science de la documentation informatique.

elfoiros
Le #6541891
Thierry B. wrote:
--{ Alain BARTHE a plopé ceci: }--

if shell == "/bin/bash" and home.startswith ("/home"):
print user


Attention, tous les yusers n'ont pas forcément Bash,
et tous les yusers ne sont pas forcément dans /home !

Souvent, on les reconnait plutôt parce que leur uid
est supérieur à une certaine valeur (1000 ?)


Je vais me renseigner, il y a forcement un moyen de determiner si un

utilisateur designe une personne ou un programme.

Merci les gars :-)


Pierre Hanser
Le #6544221
Thierry B. wrote:
--{ Alain BARTHE a plopé ceci: }--

if shell == "/bin/bash" and home.startswith ("/home"):
print user


Attention, tous les yusers n'ont pas forcément Bash,
et tous les yusers ne sont pas forcément dans /home !

Souvent, on les reconnait plutôt parce que leur uid
est supérieur à une certaine valeur (1000 ?)


Je vais me renseigner, il y a forcement un moyen de determiner si un

utilisateur designe une personne ou un programme.


probablement que si le shell est /bin/false, c'est pas un utilisateur...

--
Pierre



elfoiros
Le #6544641
Pierre Hanser wrote:
Thierry B. wrote:
--{ Alain BARTHE a plopé ceci: }--

if shell == "/bin/bash" and home.startswith ("/home"):
print user


Attention, tous les yusers n'ont pas forcément Bash,
et tous les yusers ne sont pas forcément dans /home !

Souvent, on les reconnait plutôt parce que leur uid
est supérieur à une certaine valeur (1000 ?)


Je vais me renseigner, il y a forcement un moyen de determiner si un

utilisateur designe une personne ou un programme.


probablement que si le shell est /bin/false, c'est pas un utilisateur...

C'est plus compliqué que ça, tiré d'une Ubuntu :

www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
dhcp:x:101:102::/nonexistent:/bin/false




Alexfff
Le #6547331
On 2 mai, 21:19, "Thierry B."
--{ Alain BARTHE a plopé ceci: }--



if shell == "/bin/bash" and home.startswith ("/home"):
print user


Attention, tous les yusers n'ont pas forcément Bash,
et tous les yusers ne sont pas forcément dans /home !

Souvent, on les reconnait plutôt parce que leur uid
est supérieur à une certaine valeur (1000 ?)

--
"Rébarbatique" : science de la documentation informatique.


extrait du fichier /etc/adduser.conf sur debian:

# FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for
UIDs
# for dynamically allocated administrative and system accounts/
groups.
# Please note that system software, such as the users allocated by the
base-
passwd
# package, may assume that UIDs less than 100 are
unallocated.
FIRST_SYSTEM_UID0
LAST_SYSTEM_UID™9

# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of
dynamically
# allocated user accounts/
groups.
FIRST_UID00
LAST_UID)999

ce qui devrait grandement faciliter la distinction user system | user.


Laurent
Le #6555621
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 :)

Publicité
Poster une réponse
Anonyme