Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- set -euf -o pipefail
- logMsg() {
- echo "[$(date +'%Y %b %d %T')]" ${*}
- }
- LDAP_URI=ldap://ldapserver:389
- BASE_DN="DC=example,DC=com"
- GROUP_FILTER="CN=HadoopUsers,OU=groups"
- LDAP_ACC=ldap-hdfs-sync
- LDAP_PASS='account password'
- LDAP_USERS=(`ldapsearch -LLL -x \
- -H $LDAP_URI \
- -D $LDAP_ACC -w$LDAP_PASS \
- -b $BASE_DN \
- "(&(objectCategory=person)(objectClass=user)(!(uidNumber=0))(memberOf=$GROUP_FILTER,$BASE_DN))" sAMAccountName \
- | grep sAMAccountName | cut -d: -f2 \
- | tr '[:upper:]' '[:lower:]' | sort -u`)
- HDFS_USERS=(`hdfs dfs -ls /user | grep /user | sed 's/.*\/user\///'`) # Assumed to be sorted
- # (LDAP accounts - existing HDFS accounts) = LDAP users without HDFS dirs
- for u in "${HDFS_USERS[@]}"; do
- if [ ${#LDAP_USERS[@]} -gt 0 ]; then
- LDAP_USERS=(${LDAP_USERS[@]//*$u*})
- fi
- done
- if [ ${#LDAP_USERS[@]} -eq 0 ]; then
- logMsg "No new users"
- exit 0;
- fi
- for user in "${LDAP_USERS[@]}"; do
- HDFS_PATH=hdfs:///user/$user
- if hdfs dfs -test -d $HDFS_PATH; then
- logMsg "$HDFS_PATH exists"
- else
- logMsg "Creating $HDFS_PATH"
- hdfs dfs -mkdir -p $HDFS_PATH && hdfs dfs -chown $user:hdfs $HDFS_PATH
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement