Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 22nd, 2012  |  syntax: None  |  size: 2.06 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/bin/bash
  2. LDAP_SERVER="ldap.example.com"
  3. IFS=$'\n'
  4. ldapsearch -LLL -h "$LDAP_SERVER" -x -D uid=diradmin,cn=users,dc=example,dc=com -w password -b cn=groups,dc=example,dc=com '(&(objectClass=posixGroup)(!(cn=Domain*))(!(cn=com.apple.*))(!(cn=admin))(!(cn=staff)))' description apple-group-realname memberUid |
  5. sed 's/^apple-group-realname:/name:/g' |
  6. sed 's/cn=groups,dc=example,dc=com/ou=ImportedUsers,dc=ad,dc=example,dc=com/g' |
  7. while read line ; do
  8.         if [ "$line" != "${line/dn://}" ] ; then
  9.                         declare MY_UID="$(echo "$line" | awk -F'[=,]' '/^dn:/{print $2}' )"
  10.                         declare MY_CN="$(ldapsearch -LLL -h "$LDAP_SERVER" -x -D uid=diradmin,cn=users,dc=example,dc=com -w password -b cn=groups,dc=example,dc=com "(&(objectClass=posixGroup)(&(cn=$MY_UID)))" apple-group-realname |
  11.                                                                 awk /^apple-group-realname:/ |
  12.                                                                         sed 's/^apple-group-realname: //g')"
  13.                 declare MY_NEWLINE="$(echo "$line" | sed "s/$MY_UID/$MY_CN/g" )"
  14.                 echo "$MY_NEWLINE"
  15.                 echo "changetype: add"
  16.                 echo "objectClass: top"
  17.                 echo "objectClass: group"
  18.                 echo "objectClass: apple-group"
  19.                 echo "groupType: -2147483646"
  20.                 echo "cn: $MY_CN"
  21.                 echo "sAMAccountName: $MY_UID"
  22.                 continue
  23.         fi
  24.         if [ "$line" != "${line/memberUid://}" ] ; then
  25.                 declare MY_UID="$(echo $line | awk '/^memberUid:/{print $2}' )"
  26.         if [ "$MY_UID" == root ] ; then
  27.                 continue
  28.         fi
  29.  
  30.         if [ "$MY_UID" == diradmin ] ; then
  31.                 continue
  32.         fi
  33.  
  34. declare MY_CN="$(ldapsearch -LLL -h "$LDAP_SERVER" -x -D uid=diradmin,cn=users,dc=example,dc=com -w password -b cn=users,dc=example,dc=com "(&(objectClass=posixAccount)(&(uid=$MY_UID)))" cn |
  35.                                                                 awk /^cn:/ |
  36.                                                                         sed 's/^cn: //g')"
  37.                         echo "member: CN=$MY_CN,OU=ImportedUsers,DC=ad,dc=example,dc=com"      
  38.         else
  39.                 echo "$line"
  40.         fi
  41. done