Untitled
unknown
plain_text
a year ago
3.7 kB
7
Indexable
#!/bin/bash
# Function to handle user selection (existing or new)
choose_user() {
local CHOICE=$(whiptail --title "User Selection" --menu "Choose or input user" 15 50 5 \
"1" "Choose existing user" \
"2" "Enter new user name" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus != 0 ]; then
echo "Operation cancelled."
exit
fi
case $CHOICE in
1)
# Filter users by valid home directories and exclude known service accounts
USERNAME=$(whiptail --title "Choose Existing User" --menu "Select a user" 15 50 10 $(awk -F: '$3 >= 1000 && $7 != "/usr/sbin/nologin" && $7 != "/bin/false" && $1 != "nobody" && $1 != "libvirt-qemu" && $6 !~ "/nonexistent" {print $1 " " $1}' /etc/passwd) 3>&1 1>&2 2>&3)
;;
2)
# Enter a new username
USERNAME=$(whiptail --inputbox "Enter the new username:" 8 39 3>&1 1>&2 2>&3)
;;
esac
# Check if username is empty
if [ -z "$USERNAME" ]; then
whiptail --msgbox "No user selected. Exiting..." 8 45
exit
fi
}
# Function to edit user details using usermod
edit_user() {
EDIT_OPTION=$(whiptail --title "Edit User" --menu "Choose what to edit for user $USERNAME" 15 50 4 \
"1" "Change Home Directory" \
"2" "Change Shell" \
"3" "Change Group" \
"4" "Change Comment (GECOS)" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus != 0 ]; then
echo "Operation cancelled."
exit
fi
case $EDIT_OPTION in
1)
NEW_HOME=$(whiptail --inputbox "Enter the new home directory for user $USERNAME:" 8 39 3>&1 1>&2 2>&3)
if [ -n "$NEW_HOME" ]; then
echo "Would run: sudo usermod -d $NEW_HOME -m $USERNAME"
fi
;;
2)
NEW_SHELL=$(whiptail --inputbox "Enter the new shell for user $USERNAME:" 8 39 3>&1 1>&2 2>&3)
if [ -n "$NEW_SHELL" ]; then
echo "Would run: sudo usermod -s $NEW_SHELL $USERNAME"
fi
;;
3)
NEW_GROUP=$(whiptail --inputbox "Enter the new group for user $USERNAME:" 8 39 3>&1 1>&2 2>&3)
if [ -n "$NEW_GROUP" ]; then
echo "Would run: sudo usermod -g $NEW_GROUP $USERNAME"
fi
;;
4)
NEW_COMMENT=$(whiptail --inputbox "Enter the new comment (GECOS) for user $USERNAME:" 8 39 3>&1 1>&2 2>&3)
if [ -n "$NEW_COMMENT" ]; then
echo "Would run: sudo usermod -c \"$NEW_COMMENT\" $USERNAME"
fi
;;
esac
}
# Main action menu
ACTION=$(whiptail --title "User Management Menu" --menu "Choose an action" 15 50 4 \
"1" "Edit User" \
"2" "Delete User" \
"3" "Add User" \
"4" "Block User" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus != 0 ]; then
echo "Operation cancelled."
exit
fi
# Perform action based on the selection
case $ACTION in
1)
choose_user
edit_user
;;
2)
choose_user
# Echo the command to delete user
if whiptail --yesno "Are you sure you want to delete user: $USERNAME?" 8 39; then
echo "Would run: sudo deluser $USERNAME"
fi
;;
3)
choose_user
# Echo the command to add user
if whiptail --yesno "Are you sure you want to add user: $USERNAME?" 8 39; then
echo "Would run: sudo adduser $USERNAME"
fi
;;
4)
choose_user
# Echo the command to block (lock) user
if whiptail --yesno "Are you sure you want to block user: $USERNAME?" 8 39; then
echo "Would run: sudo usermod -L $USERNAME"
fi
;;
esac
Editor is loading...
Leave a Comment