On 08/12/2008 01:07 PM, John Arends wrote:
> I am trying to write a script to do some work with Active Directory.
> Since my scripts need to run on a Linux machine, I have to use Net::LDAP.
> 

Or try the new Net::LDAP::Class (your script rewritten below):

#!/usr/bin/perl

use strict;
use warnings;
use Net::LDAP;

my $uid        = 'username';
my $bindPass   = 'blah';
my $ldapServer = 'ldaps://ad.myorg.edu';
my $base       = 'OU=SubOU,OU=myOU,dc=ad,dc=myorg,dc=edu';

{

    package MyUser;
    use base qw( Net::LDAP::Class::User::AD );
    __PACKAGE__->meta->setup(
        attributes => [ @{ __PACKAGE__->AD_attributes }, 'telephonenumber' ],
        unique_attributes => __PACKAGE__->AD_attributes,
        base_dn           => $base,
    );

    sub init_group_class {'MyGroup'}

}

{

    package MyGroup;
    use base qw( Net::LDAP::Class::Group::AD );
    __PACKAGE__->meta->setup(
        attributes        => __PACKAGE__->AD_attributes,
        unique_attributes => __PACKAGE__->AD_attributes,
        base_dn           => $base,
    );

    sub init_user_class {'MyUser'}
}

my $ldap = Net::LDAP->new($ldapServer) or die "$@";
my $msg = $ldap->bind( $uid, password => $bindPass );
if ( $msg->code ) {
    die Net::LDAP::Class->get_error_msg($msg);
}

my @users = MyUser->find( ldap => $ldap, filter => "&(sAMAccountName=*)" );

foreach my $user (@users) {
    foreach my $attr (@{ $user->attributes }) {
        printf( "%s : %s\n",  $attr, $user->$attr || '' );
    }
}


-- 
Peter Karman  .  [EMAIL PROTECTED]  .  http://peknet.com/

Reply via email to