Modify a list of DNs

From Notes

Jump to: navigation, search
#!/bin/bash

#
# Author:  Josh Miller
# Date:    06/30/2006
# Purpose: To use ldap-update to update an OpenLDAP DIT, replacing an attribute with a value.
#
# Inputs:  -i : Filename which contains a single list of DNs.
#          -a : attribute to change
#          -p : path to ldap-update script
#          -t : value to change attribute to
#
# Dependencies:
#          ldap-update
#          inputs: -d "<distinguishedName>" -a <attribute> -t <value>
#
# Tested:
#          OpenLDAP v. 2.3.24
#

usage () {
  echo
  echo -e "$0 -i <input filename> -p <ldap-update script path> -a <attribute> -t <value>"
  echo
  exit 1
}

if [[ $# -lt 8 || $# -gt 8 ]]
then
  usage
fi

while getopts a:i:p:t: input
do
  case $input in
    a) ATTRIBUTE="$OPTARG"
      ;;
    i) FILE="$OPTARG"
      ;;
    p) SCRIPT="$OPTARG"
      ;;
    t) VALUE="$OPTARG"
      ;;
  esac
done

COUNT=$(wc -l $FILE | awk '{print $1}')
let COUNT=($COUNT + 1)


for (( i=1 ; i < $COUNT ; i+=1 ))
do
  DN=$(head -n $i $FILE | tail -n 1)
  $SCRIPT -d "$DN" -a "$ATTRIBUTE" -t "$VALUE"
done

exit 0
Personal tools