#!/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" -s /bin/bash "\$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 echo "Creating MySQL connection... Enter your password if prompted." $MYSQL -u "$MYSQL_USER" -p -e "$SQL" echo "Done."