Add source files

This commit is contained in:
raul 2024-11-12 17:09:38 +01:00
parent 01368278dd
commit 3c19f9c45b
Signed by: raul
GPG Key ID: C1AA797073F17129
3 changed files with 299 additions and 0 deletions

282
autouser.sh Executable file
View File

@ -0,0 +1,282 @@
#!/bin/bash
FILE="${@: -1}"
if [[ ! -f "$FILE" ]]; then
echo "File \"$FILE\" doesn't exist!"
exit
fi
DRYRUN=false
FILE_CONTENTS="$(cat ${@: -1})"
CREATE_USERS=false
DELETE_USERS=false
CREATE_GROUPS=false
DELETE_GROUPS=false
DELIM=";"
usage ()
{
echo "Usage: ./autouser.sh \$PARAMETER file.csv"
echo ""
echo "PARAMETERS"
echo " --help || -h (Show this help prompt)"
echo " --dry-run (Test without executing any changes)"
echo " --create-users users.csv (Create users from a .csv file)"
echo " --create-groups groups.csv (Create groups from a .csv file)"
echo " --delete-users users.csv (Delete users from a .csv file)"
echo " --delete-groups groups.csv (Delete groups from a .csv file)"
exit
}
rootCheck ()
{
if [[ "$(id -u)" -ne 0 ]]; then
echo "You must be root to run this parameter"
exit
fi
}
cutter ()
{
echo "$1" | cut -d "$DELIM" -f "$2"
}
turnLowercase() {
echo "$1" | tr "[:upper:]" "[:lower:]" | sed 's/ñ/n/g'
}
createGroups ()
{
while read line; do
GID=$(cutter "${line}" "2")
GROUPNAME=$(turnLowercase $(cutter "${line}" "1"))
if [[ -z "$GID" ]]; then
echo "[+] Adding group $GROUPNAME..."
groupadd $GROUPNAME
else
echo "[+] Adding group $GROUPNAME..."
groupadd $GROUPNAME -g $GID
fi
done <<< "$FILE_CONTENTS"
}
createGroupsDry ()
{
while read line; do
GID=$(cutter "${line}" "2")
GROUPNAME=$(turnLowercase $(cutter "${line}" "1"))
if [[ -z "$GID" ]]; then
echo "groupadd $GROUPNAME"
else
echo "groupadd $GROUPNAME -g $GID"
fi
done <<< "$FILE_CONTENTS"
}
deleteGroups ()
{
while read line; do
GROUPNAME=$(turnLowercase $(cutter "${line}" "1"))
echo "[+] Deleting group $GROUPNAME..."
groupdel $GROUPNAME
done <<< "$FILE_CONTENTS"
}
deleteGroupsDry ()
{
while read line; do
GROUPNAME=$(turnLowercase $(cutter "${line}" "1"))
echo "groupdel $GROUPNAME"
done <<< "$FILE_CONTENTS"
}
createUsers ()
{
while read line; do
USERNAME=$(turnLowercase $(cutter "${line}" "1"))
FULLNAME=$(cutter "${line}" "2")
USERUID=$(cutter "${line}" "3")
USERGID=$(turnLowercase $(cutter "${line}" "4"))
USERGROUPS=$(turnLowercase $(cutter "${line}" "5"))
TLFN=$(cutter "${line}" "6")
EXTRAINFO=$(cutter "${line}" "7")
USERSHELL=$(cutter "${line}" "8")
USERLOCKED=$(cutter "${line}" "9")
echo "[+] Adding user $USERNAME..."
useradd -m $USERNAME
echo $USERNAME:$USERNAME | chpasswd
if [[ ! -z "$FULLNAME" ]]; then
chfn -f "$FULLNAME" "$USERNAME" 1>/dev/null
fi
if [[ ! -z "$USERUID" ]]; then
usermod -u $USERUID $USERNAME
fi
if [[ ! -z "$USERGID" ]]; then
usermod -g $USERGID $USERNAME
fi
if [[ ! -z "$USERGROUPS" ]]; then
usermod -G $(echo $USERGROUPS | tr "|" ",") $USERNAME
fi
if [[ ! -z "$TLFN" ]]; then
chfn -p "$TLFN" $USERNAME 1>/dev/null
fi
if [[ ! -z "$EXTRAINFO" ]]; then
chfn -o "$EXTRAINFO" $USERNAME 1>/dev/null
fi
if [[ ! -z "$USERSHELL" ]]; then
usermod -s $USERSHELL $USERNAME
else
usermod -s /bin/bash $USERNAME
fi
if [[ $USERLOCKED == "SI" ]]; then
usermod -L $USERNAME
fi
done <<< "$FILE_CONTENTS"
}
createUsersDry ()
{
while read line; do
USERNAME=$(turnLowercase $(cutter "${line}" "1"))
FULLNAME=$(cutter "${line}" "2")
USERUID=$(cutter "${line}" "3")
USERGID=$(turnLowercase $(cutter "${line}" "4"))
USERGROUPS=$(turnLowercase $(cutter "${line}" "5"))
TLFN=$(cutter "${line}" "6")
EXTRAINFO=$(cutter "${line}" "7")
USERSHELL=$(cutter "${line}" "8")
USERLOCKED=$(cutter "${line}" "9")
echo "useradd -m $USERNAME"
echo "echo \"$USERNAME:$USERNAME | chpasswd\""
if [[ ! -z "$FULLNAME" ]]; then
echo "chfn -f \"$FULLNAME\" $USERNAME"
fi
if [[ ! -z "$USERUID" ]]; then
echo "usermod -u $USERUID $USERNAME"
fi
if [[ ! -z "$USERGID" ]]; then
echo "usermod -g $USERGID $USERNAME"
fi
if [[ ! -z "$USERGROUPS" ]]; then
echo "usermod -G $(echo $USERGROUPS | tr "|" ",") $USERNAME"
fi
if [[ ! -z "$TLFN" ]]; then
echo "chfn -p \"$TLFN\" $USERNAME"
fi
if [[ ! -z "$EXTRAINFO" ]]; then
echo "usermod -c \"$EXTRAINFO\" $USERNAME"
fi
if [[ ! -z "$USERSHELL" ]]; then
echo "usermod -s $USERSHELL $USERNAME"
else
echo "usermod -s /bin/bash $USERNAME"
fi
if [[ $USERLOCKED == "SI" ]]; then
echo "usermod -L $USERNAME"
fi
done <<< "$FILE_CONTENTS"
}
deleteUsers ()
{
while read line; do
USERNAME=$(turnLowercase $(cutter "${line}" "1"))
echo "[+] Deleting user $USERNAME..."
userdel -r $USERNAME 2>/dev/null
groupdel $USERNAME 2>/dev/null
done <<< "$FILE_CONTENTS"
}
deleteUsersDry ()
{
while read line; do
USERNAME=$(turnLowercase $(cutter "${line}" "1"))
echo "userdel -r $USERNAME"
echo "groupdel $USERNAME"
done <<< "$FILE_CONTENTS"
}
for arg in "$@"
do
if [[ "$arg" == "-h" || "$arg" == "--help" ]]; then
usage
fi
if [[ "$arg" == "--dry-run" ]]; then
DRYRUN=true
fi
if [[ "$arg" == "--create-groups" ]]; then
CREATE_GROUPS=true
fi
if [[ "$arg" == "--delete-groups" ]]; then
DELETE_GROUPS=true
fi
if [[ "$arg" == "--create-users" ]]; then
CREATE_USERS=true
fi
if [[ "$arg" == "--delete-users" ]]; then
DELETE_USERS=true
fi
done
if [[ -z "$1" ]]; then
usage
fi
if [[ "$CREATE_GROUPS" == true ]]; then
if [[ "$DRYRUN" == true ]]; then
createGroupsDry
else
rootCheck
createGroups
fi
exit
fi
if [[ "$DELETE_GROUPS" == true ]]; then
if [[ "$DRYRUN" == true ]]; then
deleteGroupsDry
else
rootCheck
deleteGroups
fi
exit
fi
if [[ "$CREATE_USERS" == true ]]; then
if [[ "$DRYRUN" == true ]]; then
createUsersDry
else
rootCheck
createUsers
fi
exit
fi
if [[ "$DELETE_USERS" == true ]]; then
if [[ "$DRYRUN" == true ]]; then
deleteUsersDry
else
rootCheck
deleteUsers
fi
exit
fi

9
groups.csv Normal file
View File

@ -0,0 +1,9 @@
dueño;1101
presidente;1102
capitan;1500
jugador;
portero;
defensa;
mediocentro;1505
delantero;
entrenador;
1 dueño 1101
2 presidente 1102
3 capitan 1500
4 jugador
5 portero
6 defensa
7 mediocentro 1505
8 delantero
9 entrenador

8
users.csv Normal file
View File

@ -0,0 +1,8 @@
Pepelu;José Luis Garcia;1070;capitan;jugador|mediocentro;;;;
Gaya;Jóse Luis Gayá;1074;capitan;jugador|defensa;444;;/bin/false;
Andre;André Almeida;;jugador;mediocentro;;Portugues;;
julia;Julia Aguado;1063;jugador;delantero;222;Picassent;;
carla;Carla Bautista;;jugador;delantero;;;;SI
Pipo;Rubén Baraja;1200;entrenador;;;;;;
peter;Peter Lim;1099;dueño;entrenador|jugador|presidente;;singapur;;SI
Lay;LayHoon Chan;;presidente;entrenador|jugador;;;;;
1 Pepelu;José Luis Garcia;1070;capitan;jugador|mediocentro;;;;
2 Gaya;Jóse Luis Gayá;1074;capitan;jugador|defensa;444;;/bin/false;
3 Andre;André Almeida;;jugador;mediocentro;;Portugues;;
4 julia;Julia Aguado;1063;jugador;delantero;222;Picassent;;
5 carla;Carla Bautista;;jugador;delantero;;;;SI
6 Pipo;Rubén Baraja;1200;entrenador;;;;;;
7 peter;Peter Lim;1099;dueño;entrenador|jugador|presidente;;singapur;;SI
8 Lay;LayHoon Chan;;presidente;entrenador|jugador;;;;;