2011-10-14 3 views

답변

23

당신은 pwd.getpwnam()을 사용할 수

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

당신은 단지 /etc/passwd을 구문 분석 할 수있는, 거기 저장된.

+6

NIS 또는 LDAP 또는 nsswitch 모듈이있는 다른 모든 소스에 저장 될 수 있습니다. 그것이 우리가'getpw '로 시작하는 API를 가지고있는 이유입니다. 그래서 NIS를 사용하여 사용자 정보를 저장하는 시스템에서 수동으로'/ etc/passwd'를 파싱했기 때문에 버그가 없습니다. – mkj

+0

mkj : 고마워! NIS와 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

당신이 원하는 것을 가정하여 프로그램의 사용자 ID와 관련된 사용자 이름 문자열, 시도 :

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

사용 os.geteuid()를 유효 uid를 대신 얻을 수 그 차이가 당신에게 중요한지.

pw_name 대신 pw_gecos를 사용하여 시스템에 "실제 이름"이 표시되면이를 가져옵니다.

관련 문제