2010-03-29 9 views

Respuesta

17

Esta respuesta se basa en el answer by Brian. Agrega el bloque necesario try...except.

Comprobar si existe un usuario:

import pwd 

try: 
    pwd.getpwnam('someusr') 
except KeyError: 
    print('User someusr does not exist.') 

Comprobar si existe un grupo:

import grp 

try: 
    grp.getgrnam('somegrp') 
except KeyError: 
    print('Group somegrp does not exist.') 
9

Para buscar mi ID de usuario (bagnew) bajo Unix:

import pwd 
pw = pwd.getpwnam("bagnew") 
uid = pw.pw_uid 

Consulte la información pwd módulo para más.

+1

que aumentará 'KeyError 'si el nombre de usuario no se encuentra. –

+1

Encontrará más información aquí: http://www.doughellmann.com/PyMOTW/pwd/ – Elifarley

+0

He agregado una respuesta con el bloque 'try ... except' necesario. –

0

Analizar/etc/passwd para el nombre de usuario en cuestión. Los usuarios pueden no necesariamente tener homedir.

+2

Esto no funcionará si, por ejemplo, LDAP está siendo utilizado. –

+0

+1 por mencionar que los usuarios no necesariamente tienen homedirs. –

+0

Tenía la impresión de que no todos los sabores de Linux almacenan información de usuario en el archivo/etc/passwd ... – Powertieke

2

Utilizando pwd puede obtener una lista de todas las entradas de usuario disponibles usando pwd.getpwall(). Esto puede funcionar si no te gusta try:/except: blocks.

import pwd 

userid = "zomobiba" 
if userid in [x[0] for x in pwd.getpwall()]: 
    print "Yay" 
+2

Bien, pero no hay ninguna razón para que no les gusten los bloques 'try ... except'. También es más eficiente consultar a un solo usuario con 'getpwnam' que consultar a todos los usuarios con' getpwall'. –

0

similares a this answer, Me gustaría hacer esto:

>>> import pwd 
>>> 'tshepang' in [entry.pw_name for entry in pwd.getpwall()] 
True 
Cuestiones relacionadas