By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
464,661 Members | 1,284 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 464,661 IT Pros & Developers. It's quick & easy.

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

P: n/a
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: mm******@au1.ibm.com

Jul 23 '08 #1
Share this Question
Share on Google+
4 Replies

P: n/a
Mike MacCana <mm******@au1.ibm.comwrites:
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
Jul 23 '08 #2

P: n/a
Chris Brannon <cm*******@cox.net>:

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

--
Freedom is always the freedom of dissenters.
(Rosa Luxemburg)
Jul 23 '08 #3

P: n/a
On Wed, Jul 23, 2008 at 9:16 AM, Sebastian lunar Wiesner
<ba***********@gmx.netwrote:
Chris Brannon <cm*******@cox.net>:

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
That is valid since Python 2.3 actually
Slightly more readable, imho

--
Freedom is always the freedom of dissenters.
(Rosa Luxemburg)
--
http://mail.python.org/mailman/listinfo/python-list


--
-- Guilherme H. Polo Goncalves
Jul 23 '08 #4

P: n/a
Guilherme Polo <gg****@gmail.com>:
On Wed, Jul 23, 2008 at 9:16 AM, Sebastian lunar Wiesner
<ba***********@gmx.netwrote:
>Chris Brannon <cm*******@cox.net>:

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

That is valid since Python 2.3 actually
Thanks for clarification
--
Freedom is always the freedom of dissenters.
(Rosa Luxemburg)
Jul 23 '08 #5

This discussion thread is closed

Replies have been disabled for this discussion.