2011-10-14 19 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 

使用ではなく、実効uidを取得するには()をos.geteuidその違いがあなたにとって重要であるかどうか。

pw_nameの代わりにpw_gecosを使用して、システムに入力されている場合は「実名」を取得します。

関連する問題