mirror of
https://github.com/samba-team/samba.git
synced 2025-02-15 05:57:49 +03:00
64 lines
1.7 KiB
Perl
64 lines
1.7 KiB
Perl
#!/usr/bin/perl
|
|
##
|
|
## Example script to export ldap entries into an smbpasswd file format
|
|
## using the Mozilla PerLDAP module.
|
|
##
|
|
## writen by jerry@samba.org
|
|
##
|
|
|
|
use Mozilla::LDAP::Conn;
|
|
use Mozilla::LDAP::Entry;
|
|
|
|
######################################################
|
|
## Set these values to whatever you need 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;
|
|
|
|
print "##\n";
|
|
print "## Autogenerated smbpasswd file via ldapsearch\n";
|
|
print "## from $LDAPSERVER ($DN)\n";
|
|
print "##\n";
|
|
|
|
## scheck for the existence of the posixAccount first
|
|
$result = $conn->search ("$DN", "sub", "(objectclass=smbPasswordEntry)");
|
|
|
|
|
|
## loop over the entries we found
|
|
while ($result) {
|
|
|
|
@uid = $result->getValue("uid");
|
|
@uidNumber = $result->getValue("uidNumber");
|
|
@lm_pw = $result->getValue("lmpassword");
|
|
@nt_pw = $result->getValue("ntpassword");
|
|
@acct = $result->getValue("acctFlags");
|
|
@pwdLastSet = $result->getValue("pwdLastSet");
|
|
|
|
if (($#uid+1) && ($#uidNumber+1)) {
|
|
|
|
$lm_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#lm_pw+1));
|
|
$nt_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#nt_pw+1));
|
|
$acct[0] = "[DU ]" if (! ($#acct+1));
|
|
$pwdLastSet[0] = "FFFFFFFF" if (! ($#pwdLastSet+1));
|
|
|
|
print "$uid[0]:$uidNumber[0]:$lm_pw[0]:$nt_pw[0]:$acct[0]:LCT-$pwdLastSet[0]\n";
|
|
}
|
|
|
|
$result = $conn->nextEntry();
|
|
|
|
}
|
|
|
|
$conn->close();
|
|
exit 0;
|