Skip to content

Instantly share code, notes, and snippets.

@rghose
Last active December 29, 2015 12:59
Show Gist options
  • Save rghose/7674166 to your computer and use it in GitHub Desktop.
Save rghose/7674166 to your computer and use it in GitHub Desktop.
#!/bin/sh
set -e
# Get a list of groups a user is a member of on one line, space-seperated
# Single-quote group names with spaces, otherwise print the rest
SPACE_CHAR='-'
TMP=`mktemp`
hostname=""
baseDN=""
bindDN=""
passwd=""
ldapsearch -H ldap://$hostname -b "$baseDN" -LLL -x -z0 -D $bindDN -w $passwd "(sAMAccountName=$1)" userAccountControl memberOf > "$TMP"
# Is the account still valid? non-zero = no, zero = yes
awk '{if(!and($2,0x02)){print $0}}' "$TMP" \
| grep -qse 'userA' - || {
shred -u "$TMP"
false
}
awk '/^ /{x=$0;gsub(" ","",x);print x};!/^ /{if(length($0)==78){printf$0}else{print}}' "$TMP" | \
grep -e 'memberOf: ' | \
sed 's/.*CN=\([^,]*\),.*/\1/g' | \
tr ' \n' "$SPACE_CHAR " || {
shred -u "$TMP"
false
}
# Bit 1 (decimal value 2) of userAccountControl : 1 = account disabled, 0 = account enabled
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment