Lpasswd.pl

From In The Wings
Revision as of 13:40, 16 August 2007 by Jka (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This changes the password for an LDAP user. More could be done with it to set it to something random, but this does well for now.

#!/usr/bin/perl
#
use Net::LDAP;
use Net::LDAP::Util;

$userName = $ARGV[0];
$newPassword = $ARGV[1];

print "Updating " . $userName . "\n";

$ldapServer     = "ldap.ufhpc";
$rdn            = "cn=slapman";
$base           = "dc=hpc,dc=ufl,dc=edu";
$bindPasswd     = '';
$searchBase     = "ou=People," . $base;
$dn = "uid=" . $userName . "," . $searchBase;
$BindDn = $rdn . "," . $base;

$ldap = Net::LDAP->new( $ldapServer );

$bindDc         = $rdn . "," . $base;
$mesg = $ldap->bind( $BindDn, password => $bindPasswd, version => 3);

if ( $mesg->is_error() ) {
  print "Error: bind failed.\n";
  exit;
}

$shadowLastChange = int(time / 86400);
$shadowExpire = $shadowLastChange + 180;

$result = $ldap->modify($dn, replace => { "userPassword" => $newPassword,
                                      "shadowLastChange" => $shadowLastChange
                                      });