diff options
author | Gerald Carter <jerry@samba.org> | 2001-12-26 05:35:40 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2001-12-26 05:35:40 +0000 |
commit | b6bbc39204a4676922099ab78b6c48009266d1bb (patch) | |
tree | 3307ed65ee88888b0f71aa84b00383de07ae3d7e /examples/LDAP/import_smbpasswd.pl | |
parent | 480b5c815864d35196053016b7bbcb2fe7f65ece (diff) | |
download | samba-b6bbc39204a4676922099ab78b6c48009266d1bb.tar.gz samba-b6bbc39204a4676922099ab78b6c48009266d1bb.tar.bz2 samba-b6bbc39204a4676922099ab78b6c48009266d1bb.zip |
sync with 2.2
(This used to be commit aca58b0b72d2eb5024b4d5103fde5b281212d714)
Diffstat (limited to 'examples/LDAP/import_smbpasswd.pl')
-rw-r--r-- | examples/LDAP/import_smbpasswd.pl | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/examples/LDAP/import_smbpasswd.pl b/examples/LDAP/import_smbpasswd.pl new file mode 100644 index 0000000000..14aeff967f --- /dev/null +++ b/examples/LDAP/import_smbpasswd.pl @@ -0,0 +1,65 @@ +#!/usr/bin/perl +## +## Example script of how you could import and smbpasswd file into an LDAP +## directory using the Mozilla PerLDAP module. +## +## writen by jerry@samba.org +## + +use Mozilla::LDAP::Conn; +use Mozilla::LDAP::Entry; + +################################################# +## set these to a value appropriate for your site +## + +$DN="ou=people,dc=plainjoe,dc=org"; +$ROOTDN="cn=Manager,dc=plainjoe,dc=org"; +$rootpw = "secret"; +$LDAPSERVER="localhost"; + +## +## end local site variables +################################################# + +$conn = new Mozilla::LDAP::Conn ("$LDAPSERVER", "389", $ROOTDN, $rootpw ); +die "Unable to connect to LDAP server $LDAPSERVER" unless $conn; + + +while ( $string = <STDIN> ) { + chop ($string); + + ## get the account information + @smbentry = split (/:/, $string); + + ## check for the existence of the posixAccount first + + ## FIXME!! Should do a getownam() and let the NSS modules lookup the account + ## This way you can have a UNIX account in /etc/passwd and the smbpasswd i + ## entry in LDAP. + $result = $conn->search ("$DN", "sub", "(&(uid=$smbentry[0])(objectclass=posixAccount))"); + if ( ! $result ) { + print STDERR "uid=$smbentry[0] does not have a posixAccount entry in the directory!\n"; + next; + } + + print "Updating [" . $result->getDN() . "]\n"; + + ## Do we need to add the 'objectclass: smbPasswordEntry' attribute? + if (! $result->hasValue("objectclass", "smbPasswordEntry")) { + $result->addValue("objectclass", "smbPasswordEntry"); + } + + ## Set other attribute values + $result->setValues ("lmPassword", $smbentry[2]); + $result->setValues ("ntPassword", $smbentry[3]); + $result->setValues ("acctFlags", $smbentry[4]); + $result->setValues ("pwdLastSet", substr($smbentry[5],4)); + + if (! $conn->update($result)) { + print "Error updating!\n"; + } +} + +$conn->close(); +exit 0; |