The problem was that the description of the “Place” came out strangely encoded whenever it contained one of the norwegian characters æ,ø or å.
The ldap command:
ldapsearch -x -H ldap://ourldapserver.uib.no x121Address=XXXXXX
where XXXXXX is the “place” code, gave a place description that looked like this:
description:: SW5zdGl0dXR0IGZvciBmaWxvc29maSBvZyBmw7hyc3Rlc2VtZXN0ZXJzdHVkaWVy
where the real name of “Place” could be something like: “Institutt for .. and then a word with æ, ø or å”
The solution was to use ldapsearch as follows:
ldapsearch -x -z 1 -t departmentNumber=XXXXXX ou
where XXXXXX is the University of Bergen “placecode” for a “Place”. For instance the number 567123 could be the place code for our IT department.
-z 1 reduces the list of hits to one (1), and ou specifies the “Place” description.
The list of users was already collected in a text file: people.txt on the form:
username1
username2
…
The bash script that solved the issue for us:
[bash]
#!/bin/bash
# People collected with:
# ls -al /www/folk/ |awk {‘print $9’}|grep -v unwanted_line|sort > people.txt
PEOPLE=`cat people.txt`
for USERNAME in $PEOPLE; do
PLACECODE=`ldapsearch -x -H ldap://ourldapserver.uib.no uid=$USERNAME | grep departmentNumber | awk {‘print $2’}`
if [ ! -z $PLACECODE ]; then
# Some times name of place is written to screen, other times to a file under /tmp
OUINFO=`ldapsearch -x -z 1 -t departmentNumber=$PLACECODE ou | grep ‘ou:’`
if [ `echo $OUINFO | grep ‘file:’ | wc -l` -eq 0 ];then
PLACE=`echo $OUINFO | sed -e s/"ou: "//g`
else
THEFILE=`echo $OUINFO | grep ‘file:’ | sed -e s/".*file://"//g`
PLACE=`cat $THEFILE`
#echo "The file is: " $THEFILE
#echo "and the place is: " $PLACE
fi
fi
echo $USERNAME, $PLACE
done
[/bash]