Obviously, I'm a little late to this party, but I stumbled across this while checking to see whether I'd have to (re)invent a wheel to answer a question on the Perl Beginners mailing list. This is the solution I ultimately came up with:
#!/usr/local/bin/perl -l use strict; use warnings; my $user = $ARGV[0]; my @gr_list; my @pw_info; while (@pw_info = getpwent) { if ($pw_info[0] eq $user) { my @gr_info; while (@gr_info = getgrent) { push(@gr_list, $gr_info[2]) if ($gr_info[3] =~ /\b$user\b/); } push(@gr_list, $pw_info[3]); } } print foreach @gr_list;
It's not stunningly terse or clean-looking, at least in my estimation, but it works and doesn't involve calling out to external system utilities.
|
- apotheon
CopyWrite Chad Perrin |
In reply to Re: Fetching groups a user is in
by apotheon
in thread Fetching groups a user is in
by belg4mit
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |