Skip to content

Instantly share code, notes, and snippets.

@alessandro-fazzi
Created July 9, 2011 15:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alessandro-fazzi/1073664 to your computer and use it in GitHub Desktop.
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
#!/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;
@alessandro-fazzi
Copy link
Author

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/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment