diff --git a/clean_up_accounts.sh b/clean_up_accounts.sh old mode 100644 new mode 100755 index c83465e..7d02921 --- a/clean_up_accounts.sh +++ b/clean_up_accounts.sh @@ -93,6 +93,14 @@ search_ghosts() { ) echo "${orphan_homes[@]}" } + +check_user_has_home() { + local login="$1" + local home_folder="/mnt/home.ipr" + if [ -d "${home_folder}/${login}" ]; then + echo "$login" + fi +} run_remote() { @@ -137,6 +145,24 @@ sync_folder() { } +move_folder() { + # source folder + local src="$1" + # destination folder + local dest="$2" + # supervisor login + local supervisor="$3" + + supervisor_group=$(id -gn $supervisor) + # Change ownership + chown -R $supervisor:$supervisor_group "$src" + # Create dir + mkdir -p "$dest" + # Move it + mv "$src" "$dest" +} + + remove_folder() { local folder="$1" echo "Removing \""$1"\"..." @@ -167,12 +193,24 @@ chmod 600 "$ldap_file" echo echo "Please select an orphan folder in the list: " echo -PS3="Enter an item number: " +PS3="Enter an item number (-1 for manual entry): " while true; do select old_user in $(run_remote "home.ipr" "search_ghosts"); do if [[ -n "$old_user" ]]; then echo "Selection: $old_user" - break 2 + break 2 + elif [[ $REPLY -eq -1 ]]; then + while true; do + read -p "MANUAL ENTRY: " ANSWER + old_user=$(run_remote "home.ipr" "check_user_has_home" "$ANSWER") + if [[ -n "$old_user" ]]; then + echo "Selection: $old_user" + break 3 + else + echo "Invalid choice" + break 2 + fi + done else echo "Invalid choice" fi @@ -192,8 +230,8 @@ work_dest=/mnt/work/$supervisor/old_users/ home_dest=/mnt/home.ipr/$supervisor/old_users/ # Ask if we remove folders after sync -ask_yes_no "Remove \"$work_src\" and \"$home_src\" after synchronization ?" y -remove_after=$? +#ask_yes_no "Remove \"$work_src\" and \"$home_src\" after synchronization ?" y +#remove_after=$? # Should we warn the supervisor ask_yes_no "Email confirmation to supervisor ?" y @@ -207,11 +245,13 @@ fi # Print a summary echo "/!\ SUMMARY:" echo "------------" -echo "-> \"$work_src\" will be synchronized in \"$work_dest\"" -echo "-> \"$home_src\" will be synchronized in \"$home_dest\"" -echo -n "-> \"$work_src\" and \"$home_src\" will be " -[[ "$remove_after" == 0 ]] && echo -n "REMOVED from " || echo -n "KEPT on " -echo "the file system." +#echo "-> \"$work_src\" will be synchronized in \"$work_dest\"" +#echo "-> \"$home_src\" will be synchronized in \"$home_dest\"" +echo "-> \"$work_src\" will be moved to \"$work_dest\"" +echo "-> \"$home_src\" will be moved to \"$home_dest\"" +#echo -n "-> \"$work_src\" and \"$home_src\" will be " +#[[ "$remove_after" == 0 ]] && echo -n "REMOVED from " || echo -n "KEPT on " +#echo "the file system." #[[ "$delete_user" == 0 ]] && echo "-> User "$folder" WILL BE DELETED." [[ "$send_email" == 0 ]] && echo "-> A confirmation will be sent to "$email"." echo "" @@ -234,14 +274,16 @@ EOF if [ "$do_it" == 0 ]; then - run_remote --sudo "home.ipr" "sync_folder" "$home_src" "$home_dest" "$supervisor" - run_remote --sudo "work.ipr" "sync_folder" "$work_src" "$work_dest" "$supervisor" - if [ "$remove_after" == 0 ]; then - ask_yes_no "Please CONFIRM that you REALLY want to delete "$work_src" and "$home_src" ?" y - confirm_removal=$? - [[ "$confirm_removal" == 0 ]] && run_remote --sudo "home.ipr" "remove_folder" "$home_src" - [[ "$confirm_removal" == 0 ]] && run_remote --sudo "work.ipr" "remove_folder" "$work_src" - fi + #run_remote --sudo "home.ipr" "sync_folder" "$home_src" "$home_dest" "$supervisor" + #run_remote --sudo "work.ipr" "sync_folder" "$work_src" "$work_dest" "$supervisor" + run_remote --sudo "home.ipr" "move_folder" "$home_src" "$home_dest" "$supervisor" + run_remote --sudo "work.ipr" "move_folder" "$work_src" "$work_dest" "$supervisor" + #if [ "$remove_after" == 0 ]; then + # ask_yes_no "Please CONFIRM that you REALLY want to delete "$work_src" and "$home_src" ?" y + # confirm_removal=$? + # [[ "$confirm_removal" == 0 ]] && run_remote --sudo "home.ipr" "remove_folder" "$home_src" + # [[ "$confirm_removal" == 0 ]] && run_remote --sudo "work.ipr" "remove_folder" "$work_src" + #fi [[ "$send_email" == 0 ]] && run_remote "alambix" "mail_it" "$email" "$message" update_db "$old_user" else