2011-10-14 34 views

Respuesta

23

Usted podría utilizar pwd.getpwnam():

In [5]: pwd.getpwnam('aix').pw_uid 
Out[5]: 1004 
0

Se podía analizar /etc/passwd, se almacena allí.

+6

Puede almacenarse allí, o en NIS, o en LDAP, o en cualquier otra fuente para la que haya un módulo nsswitch. Es por eso que tenemos API que comienzan con 'getpw', para que no tenga un error porque analizó'/etc/passwd' a mano en un sistema que usa (digamos) NIS para almacenar información del usuario. – mkj

+0

mkj: ¡Gracias! No sabía sobre NIS y LDAP. – vines

5

pwd:

import pwd 
for p in pwd.getpwall(): 
    print p 

pwd.struct_passwd(pw_name='_calendar', pw_passwd='*', pw_uid=93, pw_gid=93, pw_gecos='Calendar', pw_dir='/var/empty', pw_shell='/usr/bin/false') 
pwd.struct_passwd(pw_name='_teamsserver', pw_passwd='*', pw_uid=94, pw_gid=94, pw_gecos='TeamsServer', pw_dir='/var/teamsserver', pw_shell='/usr/bin/false') 
pwd.struct_passwd(pw_name='_update_sharing', pw_passwd='*', pw_uid=95, pw_gid=-2, pw_gecos='Update Sharing', pw_dir='/var/empty', pw_shell='/usr/bin/false') 
pwd.struct_passwd(pw_name='_installer', pw_passwd='*', pw_uid=96, pw_gid=-2, pw_gecos='Installer', pw_dir='/var/empty', pw_shell='/usr/bin/false') 
pwd.struct_passwd(pw_name='_atsserver', pw_passwd='*', pw_uid=97, pw_gid=97, pw_gecos='ATS Server', pw_dir='/var/empty', pw_shell='/usr/bin/false') 
pwd.struct_passwd(pw_name='_ftp', pw_passwd='*', pw_uid=98, pw_gid=-2, pw_gecos='FTP Daemon', pw_dir='/var/empty', pw_shell='/usr/bin/false') 
15

Suponiendo que lo que quiere es la cadena de nombre de usuario asociado con el identificador de usuario para su programa, intente:

import os 
import pwd 
pwd.getpwuid(os.getuid()).pw_name 

Uso os.geteuid() para obtener el identificador de usuario efectivo en vez , si esa diferencia te importa

Use pw_gecos en lugar de pw_name para obtener el "nombre real" si eso está poblado en su sistema.

Cuestiones relacionadas