diff --git a/balls/disco-linux-ents/files/usr/sbin/disco-linux-ents b/balls/disco-linux-ents/files/usr/sbin/disco-linux-ents new file mode 100644 index 0000000..9ee4b13 --- /dev/null +++ b/balls/disco-linux-ents/files/usr/sbin/disco-linux-ents @@ -0,0 +1,36 @@ +#!/bin/bash + +DEL="" +ADD="" +MOD="" +GETENT="" + +HOSTNAME=$(hostname) + +if [ "$1" == "user" ]; then + GETENT="passwd" + DEL="userdel" + ADD="useradd" + MOD="usermod" +elif [ "$1" == "group" ]; then + GETENT="group" + DEL="groupdel" + ADD="groupadd" + MOD="groupmod" +fi + +NAME="$2" +op="$3" + +PARAMS=$(disco-param get ${HOSTNAME}/users/${op}/${NAME}) +getent ${GETENT} | grep "^${NAME}" 2>&1 | disco-shutup +RETVAL=$? +if [ $RETVAL -eq 0 ] && [ "$op" == "absent" ]; then + ${DEL} ${NAME} +elif [ $RETVAL -eq 0 ]; then + ${MOD} ${PARAMS} ${NAME} +elif [ "$op" == "present" ]; then + ${ADD} ${PARAMS} ${NAME} +fi + +exit $? \ No newline at end of file diff --git a/balls/users/requires b/balls/users/requires new file mode 100644 index 0000000..a514245 --- /dev/null +++ b/balls/users/requires @@ -0,0 +1 @@ +disco-linux-ents \ No newline at end of file diff --git a/balls/users/scripts/00-makeusers.sh b/balls/users/scripts/00-makeusers.sh index 1f54eb0..574b7de 100644 --- a/balls/users/scripts/00-makeusers.sh +++ b/balls/users/scripts/00-makeusers.sh @@ -11,17 +11,15 @@ HOSTNAME=$(hostname) -for username in $(disco-param keys ${HOSTNAME}/users) +RETVAL=0 + +for op in present absent do - NAME=$username - PARAMS=$(disco-param get ${HOSTNAME}/users/${NAME}) - getent passwd | grep "^${NAME}" 2>&1 | disco-shutup - RETVAL=$? - if [ $RETVAL -eq 0 ] && [ "$PARAMS" == "" ]; then - userdel ${NAME} - elif [ $RETVAL -ne 0 ]; then - usermod ${PARAMS} ${NAME} - elif [ "$PARAMS" != "" ]; then - useradd ${PARAMS} ${NAME} - fi + for username in $(disco-param keys ${HOSTNAME}/users/${op}) + do + disco-linux-ents user $username $op + RETVAL=$(expr $RETVAL + $?) + done done + +exit $RETVAL \ No newline at end of file