Advertisement
Guest User

Untitled

a guest
Apr 14th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. set -euf -o pipefail
  4.  
  5. logMsg() {
  6. echo "[$(date +'%Y %b %d %T')]" ${*}
  7. }
  8.  
  9. LDAP_URI=ldap://ldapserver:389
  10. BASE_DN="DC=example,DC=com"
  11. GROUP_FILTER="CN=HadoopUsers,OU=groups"
  12.  
  13. LDAP_ACC=ldap-hdfs-sync
  14. LDAP_PASS='account password'
  15.  
  16. LDAP_USERS=(`ldapsearch -LLL -x \
  17. -H $LDAP_URI \
  18. -D $LDAP_ACC -w$LDAP_PASS \
  19. -b $BASE_DN \
  20. "(&(objectCategory=person)(objectClass=user)(!(uidNumber=0))(memberOf=$GROUP_FILTER,$BASE_DN))" sAMAccountName \
  21. | grep sAMAccountName | cut -d: -f2 \
  22. | tr '[:upper:]' '[:lower:]' | sort -u`)
  23.  
  24. HDFS_USERS=(`hdfs dfs -ls /user | grep /user | sed 's/.*\/user\///'`) # Assumed to be sorted
  25.  
  26. # (LDAP accounts - existing HDFS accounts) = LDAP users without HDFS dirs
  27. for u in "${HDFS_USERS[@]}"; do
  28. if [ ${#LDAP_USERS[@]} -gt 0 ]; then
  29. LDAP_USERS=(${LDAP_USERS[@]//*$u*})
  30. fi
  31. done
  32.  
  33. if [ ${#LDAP_USERS[@]} -eq 0 ]; then
  34. logMsg "No new users"
  35. exit 0;
  36. fi
  37.  
  38. for user in "${LDAP_USERS[@]}"; do
  39. HDFS_PATH=hdfs:///user/$user
  40. if hdfs dfs -test -d $HDFS_PATH; then
  41. logMsg "$HDFS_PATH exists"
  42. else
  43. logMsg "Creating $HDFS_PATH"
  44. hdfs dfs -mkdir -p $HDFS_PATH && hdfs dfs -chown $user:hdfs $HDFS_PATH
  45. fi
  46. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement