Proper way to query user and group database on a Unix host?

M

Mike MacCana

Hi folks,

What's the proper way to query the passwd and group database on a Unix
host?

I'd like to fetch the users in a group (obviously from name services),
but my many varied searches can't find any reference of someone ever
looking up users on a Unix system, just NT. Weird, I know.

Currently I'm calling the getent command, which works well enough, but
surely there's a more Pythonic method of looking up OS user and group
data ...

## Get the full group database entry, leave just the user list, and split the list on comma
groupname=users
groupsusers = commands.getoutput('getent group '+groupname).split(':',-1)[3].split(',')


Cheers,

Mike

________________________________________________
Mike MacCana
Technical Specialist
Australia Linux and Virtualisation Services

IBM Global Services
Level 14, 60 City Rd
Southgate Vic 3000

Phone: +61-3-8656-2138
Fax: +61-3-8656-2423
Email: (e-mail address removed)
 
C

Chris Brannon

Mike MacCana said:
Hi folks,

What's the proper way to query the passwd and group database on a Unix
host?

Use the pwd and grp modules, respectively.
## Get the full group database entry, leave just the user list,
## and split the list on comma
groupname=users
groupsusers = commands.getoutput('getent group '+groupname).split(':',-1)[3].split(',')

Instead, do this:

import grp
groupname = 'users'
groupusers = grp.getgrnam(groupname)[3]
print 'The group named "users" contains:'
for username in groupusers:
print username

The functions from the grp and pwd modules return tuples. The docs describe
their formats.

Hope this helps,
-- Chris
 
S

Sebastian \lunar\ Wiesner

Chris Brannon <[email protected]>:

Iirc since Python 2.5 these tuples are named ...
Instead, do this:

import grp
groupname = 'users'
groupusers = grp.getgrnam(groupname)[3]
.... thus this line could be written as:

groupusers = grp.getgrnam(groupname).gr_mem

Slightly more readable, imho
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,166
Latest member
DollyBff32
Top