A few things:
1. Most ldapsearch clients do not provide a -S flag. Is that "sort"? A
more portable solution might be to pipe through the sort command. If it
works, great.
2. Many bashes don't support arrays. You need to make sure you use bash
2.0 or higer or else it won't work. Since bash2 has other issue, many
systems don't come with that installed.
3. There is a handy utility called "digest" that I use w/ shell scripts
to make MD5, SHA, crypt, etc. hashes. It was written by Andre Opperman
and comes with his qmail patches on www.nrg4u.com.
Kevin
-----Original Message-----
From: C.Lee Taylor
Sent: Fri 10/26/2001 8:09 AM
To: openldap-software@OpenLDAP.org
Cc:
Subject: Get Max uidNumber ...
Greetings ...
I search the archives and found that there was a few
ideas how to do
this, so I thought that I would though out my idea and see you
guys bash
it ... no pun intended ... I know this would be slow if one was
tring to
bring in more than a few users, but then I use it just to add a
few
users at a time ... I also believe this would not be a good idea
to have
more than one user adding in users, because the uidNumber could
go up
while we import the next user.
Take look and tell me what you think ...
Mailed
Lee
#!/bin/bash
#
ldapsecret="-w topsecret"
ldapDN="dc=foobar, dc=com"
function getMaxUid ()
{
n=0
for i in $(ldapsearch -x -LLL $ldapsecret -D "cn=Manager,
$ldapDN"
"(uidNumber=*)" uidNumber -S uidNumber | grep uidNumber | tail
-n1 );
do \
ldaparry[$n]=$i
let n+=1
done
if [ "${ldaparry[0]}" == "uidNumber:" ]; then
echo $((${ldaparry[1]}+1))
return 0
else
return -1
fi
}
function adduser ()
{
echo "dn: uid=tempacc,ou=People,$ldapDN"
echo "uid: tempacc"
echo "cn: tempacc"
echo "sn: surname"
echo "objectClass: person"
echo "objectClass: organizationalPerson"
echo "objectClass: inetOrgPerson"
echo "objectClass: account"openldap-software@OpenLDAP.org
echo "objectClass: posixAccount"
echo "objectClass: top"
echo "objectClass: shadowAccount"
echo "userPassword:: e2NyeXB0fVNBMDFWamZva2VwUi4="
echo "shadowLastChange: 11159"
echo "shadowMax: 99999"
echo "shadowWarning: 7"
echo "gidNumber: 100"
echo "homeDirectory: /home/users/tempacc"
uidNumber=`getMaxUid`
(($uidNumber > 0))
if [ $? ]; then
echo "uidNumber: $uidNumber"
return 0
else
return -1
fi
}
adduser | ldapadd -x $ldapsecret -D "cn=Manager, $ldapDN
exit 0
<<winmail.dat>>