[PY3]——pwd | grp 模块


pwd和grp模块都非常简单粗暴,各自分别下面都只有三个函数,来根据/etc/passwd、/etc/group文件获取相关信息


 

getpwuid(UID):根据UID获取用户信息,返回一个list

print(pwd.getpwuid(0))
pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')

print(pwd.getpwuid(0).pw_name) root

print(pwd.getpwuid(0).pw_shell) /bin/bash

 

getpwnam(用户名):根据用户名获取用户信息,返回list

print(pwd.getpwnam("root"))
pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')

 

getpwall():获取所有用户的信息,返回一个list

for i in pwd.getpwall():
    print(i)

 

getgrgid(GID):根据GID获取用户组的信息,返回一个list

print(grp.getgrgid("500"))
grp.struct_group(gr_name='user00', gr_passwd='x', gr_gid=500, gr_mem=[])

 

getgrnam("组名"):根据用户组名获取用户组的信息,返回一个list

print(grp.getgrnam("user00"))
grp.struct_group(gr_name='user00', gr_passwd='x', gr_gid=500, gr_mem=[])

 

getgrall( ):获取所有用户组的信息,返回一个list

for i in grp.getgrall():
    print(i)

 

自定义uid<—>uname,gid<—>gname转换的函数

在某些场景中我们可能会需要用到这样的转换

def uname_uid(str):
    if str.isdigit():
        return pwd.getpwuid(int(str)).pw_name
    else:
        return pwd.getpwnam(str).pw_uid

print(uname_uid("0"))
#root
print(uname_uid("user00"))
#500
import grp
def gname_gid(str):
    if str.isdigit():
        return grp.getgrgid(int(str)).gr_name
    else:
        return grp.getgrnam(str).gr_gid

print(gname_gid("0"))
#root
print(gname_gid("user00"))
#500

 

posted @ 2017-08-22 17:41  Jelly_lyj  阅读(354)  评论(0编辑  收藏  举报