Hi Don,
On Fri, Jul 11, 2008 at 5:33 PM, Miller, Don C. <[EMAIL PROTECTED]> wrote:
Alex, does setting 'pwdLastSet' => 0 not work for you? You can't set
the value to anything else but you should be able to set it to zero
which will force the expiration.
$ldap->modify($dn, replace => { 'pwdLastSet' => 0 });
thank you, it works. Below is my complete code for the archive.
I haven't found, how to mimic VBScript's AccountDisabled=FALSE
in Perl, but the user creation seems to work ok without it too.
Greetings from Germany
Alex
#!/usr/bin/perl -w
use strict;
use Net::LDAPS;
use Net::LDAP qw(LDAP_SUCCESS LDAP_ALREADY_EXISTS);
use Unicode::Map8;
use Unicode::String qw(utf16);
use constant ROOTDN => 'OU=ImportedExt,OU=User
Accounts,DC=internal,DC=XXX,DC=com';
use constant DOMAIN => 'internal.XXX.com';
use constant SERVER => ['ablwdc01.' . DOMAIN, 'ablwdc02.' . DOMAIN];
use constant ADMIN => 'XXXXXXX';
use constant ADMPW => 'XXXXXX';
use constant NORMAL_ACCOUNT => 0x200;
my ($ldap, $result, $charmap, $unipwd);
my ($uid, $first, $last, $mail, $city, $company, $password, $fullname,
$dn)
= qw(perl_test perl test [EMAIL PROTECTED] Bochum XXX xxxxxxx123);
$ldap = Net::LDAPS->new(SERVER) or
die('Could not connect to LDAP server ' . SERVER);
$ldap->bind(ADMIN . '@' . DOMAIN, password => ADMPW) or
die('Could not bind to LDAP server ' . SERVER . ' as ' . ADMIN);
$fullname = "$first $last";
$dn = "cn=$uid," . ROOTDN;
$charmap = Unicode::Map8->new('latin1') or die $!;
$unipwd = $charmap->tou(qq{"$password"})->byteswap()->utf16();
$result = $ldap->add($dn,
attr => [
objectClass => 'user',
sAMAccountName => $uid,
userPrincipalName => $uid . '@' . DOMAIN,
givenName => $first,
sn => $last,
displayName => $fullname,
description => $fullname,
mail => $mail,
l => $city,
physicalDeliveryOfficeName => $city,
company => $company,
unicodePwd => $unipwd,
]
);
if (LDAP_SUCCESS != $result->code) {
warn "User $uid already exists!\n"
if (LDAP_ALREADY_EXISTS == $result->code);
die 'Failed to add user: ', $result->error;
}
$result = $ldap->modify($dn, replace => { pwdLastSet => 0 } );
$result->code && die 'Failed to modify user: ', $result->error;
$result = $ldap->modify($dn,
replace => { userAccountControl => NORMAL_ACCOUNT } );
$result->code && die 'Failed to enable user: ', $result->error;
$ldap->unbind;