This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
user-mgmt/management/user-mgmt.sh

87 lines
2 KiB
Bash
Raw Normal View History

2023-07-14 07:38:01 +00:00
#!/bin/bash
# User Management Script, powered by an SQL database
# (c) Sangelo | Read Licenses for more info: https://gitpot.dev/sangelo/user-mgmt
# Variables
E_BADARGS=65
MYSQL=`which mysql`
2023-07-14 07:48:10 +00:00
MYSQL_USER="root"
2023-07-14 07:38:01 +00:00
USAGE="
$0 -- user management script
Usage:
init
add {username} {name} {description}
delete {username}
list
"
# Check for correct number of arguments and action
if [ $# -lt 1 ]
then
echo "$USAGE"
exit $E_BADARGS
fi
# Switch between different actions
case "$1" in
"init")
2023-07-14 07:48:10 +00:00
Q1="CREATE SCHEMA if not exists usermgmt; use usermgmt; CREATE TABLE if not exists users (username varchar(255), name varchar(255), description varchar(255));"
2023-07-14 07:38:01 +00:00
SQL="${Q1}"
;;
2023-07-14 08:13:43 +00:00
2023-07-14 07:38:01 +00:00
"add")
if [ $# -ne 4 ]
then
echo "Error: Invalid action."
echo "$USAGE"
exit $E_BADARGS
fi
Q1="INSERT INTO usermgmt.users (username, name, description) VALUES ('$2', '$3', '$4');"
SQL="${Q1}"
2023-07-14 08:13:43 +00:00
PASSWORD=`openssl rand -base64 12`
useradd -m -p "$PASSWORD" "$2"
echo "$PASSWORD" > "/home/$2/password.txt"
echo "This is your password. Please delete this file after saving the password." >> "/home/$2/password.txt"
2023-07-14 07:38:01 +00:00
;;
2023-07-14 08:13:43 +00:00
"delete")
2023-07-14 07:38:01 +00:00
if [ $# -ne 2 ]
then
2023-07-14 08:13:43 +00:00
echo "Error: Invalid action."
echo "$USAGE"
exit $E_BADARGS
fi
echo -n "Are you sure you want to delete user "$2"? [y/N] "
read confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]
then
Q1="DELETE FROM usermgmt.users WHERE username = '$2';"
SQL="${Q1}"
userdel -r "$2"
else
echo "User deletion cancelled."
exit 0
2023-07-14 07:38:01 +00:00
fi
;;
2023-07-14 08:13:43 +00:00
2023-07-14 07:38:01 +00:00
"list")
if [ $# -ne 1 ]
then
echo "Error: Invalid action."
echo "$USAGE"
exit $E_BADARGS
fi
Q1="SELECT username, name, description FROM usermgmt.users;"
SQL="${Q1}"
;;
2023-07-14 08:13:43 +00:00
2023-07-14 07:38:01 +00:00
*)
echo "Error: Invalid action. Please use a valid argument."
echo "$USAGE"
exit $E_BADARGS
;;
esac
2023-07-14 08:14:39 +00:00
echo "Creating MySQL connection... Enter your password if prompted."
2023-07-14 07:38:01 +00:00
$MYSQL -u "$MYSQL_USER" -p -e "$SQL"
2023-07-14 08:15:21 +00:00
echo "Done."