我想使用Python將組ID分配給相應的組名。該例程必須適用於類Unix操作系統(Linux和Mac OS X)。通過組名得到組ID(Python,Unix)
這是我迄今發現
>>> import grp
>>> for g in grp.getgrall():
... if g[0] == 'wurzel':
... print g[2]
我想使用Python將組ID分配給相應的組名。該例程必須適用於類Unix操作系統(Linux和Mac OS X)。通過組名得到組ID(Python,Unix)
這是我迄今發現
>>> import grp
>>> for g in grp.getgrall():
... if g[0] == 'wurzel':
... print g[2]
如果你讀了grp module documentation你會看到grp.getgrnam(組名)將返回從組數據庫,這是一個元組類對象一個條目。
>>> import grp
>>> groupinfo = grp.getgrnam('root')
>>> print groupinfo[2]
0
>>> print groupinfo.gr_gid
0
其他條目的名稱,加密密碼(一般爲空,如果使用shadow文件,這將是一個虛擬值)和所有組成員:您可以通過索引或屬性訪問信息名。這工作得很好任何Unix系統上,包括我的Mac OS X的筆記本電腦:
>>> import grp
>>> admin = grp.getgrnam('admin')
>>> admin
('admin', '*', 80, ['root', 'admin', 'mj'])
>>> admin.gr_name
'admin'
>>> admin.gr_gid
80
>>> admin.gr_mem
['root', 'admin', 'mj']
該模塊還提供了一個方法來獲得由GID條目,因爲你發現,遍歷數據庫中所有條目的方法:
>>> grp.getgrgid(80)
('admin', '*', 80, ['root', 'admin', 'mj'])
>>> len(grp.getgrall())
73
最後但並非最不重要的,蟒蛇提供了類似的功能,以取得該密碼和影子文件的信息,在pwd和spwd模塊,其中有一個類似的API。
grp.getgrnam(name)
返回對於給定的組名組數據庫條目。如果找不到條目,則會引發KeyError。
組數據庫條目被報告爲元組類對象,其屬性對應的組結構的成員:
Index Attribute Meaning
0 gr_name the name of the group
1 gr_passwd the (encrypted) group password; often empty
2 gr_gid the numerical group ID
3 gr_mem all the group member’s user names
數值組ID是在索引2,或第二從最後,或屬性gr_gid
。
的root
GID是0:
>>> grp.getgrnam('root')
('root', 'x', 0, ['root'])
>>> grp.getgrnam('root')[-2]
0
>>> grp.getgrnam('root').gr_gid
0
>>>
你也應該鏈接到http://docs.python.org/library/grp.html – Stobor 2009-07-21 08:19:00
對。也許你可以在瀏覽器中滾動到文檔的頂部。 – gimel 2009-07-21 08:27:14