Created
July 9, 2011 15:26
-
-
Save alessandro-fazzi/1073664 to your computer and use it in GitHub Desktop.
A script to delete a GNU/Linux system user with his home dir and his system mailbox. Previously backed up
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#Aggiungere variabili configurabili | |
saved_dir=/root/saved | |
#Stampa l'utilizzo dello script | |
usage(){ | |
echo -e "Utilizzo: `basename $0` username" | |
exit 1; | |
} | |
#Verifica l'esistenza dell'utente, della sua cartella home | |
#+ e della inbox. Se uno di questi non esiste non siamo in | |
#+ una situazione standard, quindi esco con errore | |
checkuser(){ | |
local user="$1"; | |
if grep -q $user '/etc/passwd' | |
then | |
if [[ ! -d /home/${user} ]] | |
then echo -e "L'utente non ha la home......\r" | |
exit 1 | |
elif [[ ! -e /var/mail/${user} ]] | |
then echo -e "L'utente non ha una inbox...\r" | |
exit 1 | |
else | |
return 0 | |
fi | |
else | |
return 1 | |
fi | |
} | |
checksavedir(){ | |
if [[ ! -d ${saved_dir} ]]; then | |
echo "La directory ${saved_dir} in cui fare i backup non esiste. Creala e riprova." | |
exit 1 | |
else | |
return 0 | |
fi | |
} | |
#Effettttuo il backup dell'utente: cartella home ed inbox; nella home | |
#+ c'è sia la cartella con eventuali dati di lavoro del vecchio dominio | |
#+ sia la cartella con la posta elettronica - inbox esclusa. Tutto viene | |
#+ salvato in un file | |
bkpuser(){ | |
local user="$1" | |
tar cf ${saved_dir}/${user}.tar /home/${user} &> /dev/null | |
tar rf ${saved_dir}/${user}.tar /var/mail/${user} &> /dev/null | |
echo -e "...Backup eseguito...\r" | |
} | |
#Elimino tutti i dati dell'utente e l'utente dalla macchina | |
deluser(){ | |
local user="$1" | |
userdel $user | |
rm -rf /home/${user} | |
rm -f /var/mail/${user} | |
echo -e "...utente e ralativi dati eliminati\n" | |
echo -e "Il backup dell'utente si trova in /root/saved/${user}.tar\r" | |
echo -e "Ricorda di spostarlo altrove o intaserai il server prima o poi...\n" | |
echo -e "ByeBye ;)" | |
} | |
[[ $# -eq 0 ]] && usage; | |
#Se la funzione "checkuser" esce con un exit status positivo allora | |
#+ faccio partire le operazioni richiamando le funzioni di cui sopra | |
if checkuser "$1"; then | |
echo -e "Eseguo operazioni...\r" | |
if checksavedir; then | |
bkpuser "$1" | |
fi | |
deluser "$1" | |
else | |
echo -e "Utente inesistente...\r" | |
usage; | |
fi | |
#Se arrivo fin qui è perché tutto è andato bene, quindi esco con exit | |
#+ status 0 | |
exit 0; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just for everyday tasks automation and for "non-unix" colleagues.
It works only for standard system users with home dir in /home and inbox in /var/mail/