Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Which backend is getpwent using?

by j0se (Pilgrim)
on Jul 11, 2013 at 13:11 UTC ( #1043720=perlquestion: print w/ replies, xml ) Need Help??
j0se has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

I have the following code to find duplicate UIDs:

use strict; use warnings; use User::pwent; # overrides normal getpwent() use Test::More 'no_plan'; # Duplicate UIDs my @dups = duplicate_uids(); is( @dups, 0, "duplicate uids (@dups)" ); sub duplicate_uids { my @uids; while ( my $pwent = getpwent() ) { push @uids, $pwent->uid; } endpwent(); my %seen = (); my @dups = grep { $seen{$_}++ } @uids; if (@dups) { return @dups; } else { return 0; } }

I'm getting this output ...

not ok 10 - duplicate uids (0 65534) # Failed test 'duplicate uids (0 65534)' # at sys-test.pl line 57. # got: '2' # expected: '0'
... and the reason is that root (0) and nobody (65534) accounts exist both in /etc/passwd and LDAP.

Is there a way to distinguish between various user account backends (e.g. /etc/passwd, LDAP) from within a Perl program using getpwent?

Well done is better than well said. -- Benjamin Franklin

Comment on Which backend is getpwent using?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1043720]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (6)
As of 2014-10-22 02:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (112 votes), past polls