85 lines
2 KiB
Bash
Executable file
85 lines
2 KiB
Bash
Executable file
#!/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`
|
|
MYSQL_USER="root"
|
|
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")
|
|
Q1="CREATE SCHEMA if not exists usermgmt; use usermgmt; CREATE TABLE if not exists users (username varchar(255), name varchar(255), description varchar(255));"
|
|
SQL="${Q1}"
|
|
;;
|
|
|
|
"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}"
|
|
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"
|
|
;;
|
|
|
|
"delete")
|
|
if [ $# -ne 2 ]
|
|
then
|
|
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
|
|
fi
|
|
;;
|
|
|
|
"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}"
|
|
;;
|
|
|
|
*)
|
|
echo "Error: Invalid action. Please use a valid argument."
|
|
echo "$USAGE"
|
|
exit $E_BADARGS
|
|
;;
|
|
esac
|
|
|
|
$MYSQL -u "$MYSQL_USER" -p -e "$SQL"
|