Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # userLin.sh
- # angeldp
- #
- # Script de gestión de usuarios.
- # Con -v mostrará los usuarios que pueden iniciar sesión en el equipo;
- # con -a añadirá nuevos usuarios; y con -e eliminará el usuario que se indique.
- #
- # En primer lugar comprobaré los parámetros:
- clear
- # Si no se ha pasado un parámetro
- # señalo el error e indico la sintaxis correcta.
- if [ $# -ne 1 ]
- then
- echo "Sintaxis incorrecta; "
- echo "Uso: $0 [-v | -a | -e]"
- echo -e "-v\tMuestra los usuarios que pueden iniciar sesión."
- echo -e "-a\tPermite añadir usuarios al sistema."
- echo -e "-e\tPermite eliminar usuarios del sistema."
- exit
- fi
- # Si se quieren ver los usuarios
- # muestro un mensaje de espera y la lista con los nombres
- # del primer campo del fichero /etc/passwd; siempre y cuando
- # las líneas no terminen en false (grep -v "false"$)
- if [ "$1" = "-v" ]
- then
- echo -n "Generando el listado de usuarios "
- echo -n ". "
- sleep 1
- echo -n ". "
- sleep 1
- echo "."
- USUARIOS=`grep -v "false"$ /etc/passwd | cut -d: -f1`
- # Si la variable usuarios queda vacía es que se ha producido un error:
- if [ -z "$USUARIOS" ]
- then
- echo "Se ha producido un error al leer de /etc/passwd"
- exit
- fi
- echo $USUARIOS
- # Si lo que se desea es añadir usuarios...
- elif [ "$1" = "-a" ]
- then
- # deberé comprobar que quien ejecuta el script puede añadir usuarios
- # para ello miraré si puede editar /etc/passwd
- if [ ! -w /etc/passwd ]
- then
- echo "No tiene permisos para añadir usuarios al equipo. Use sudo"
- exit
- fi
- echo -n "Indique el nombre de usuario a añadir: "
- read NUEVOUSU
- # Comprobaré que efectivamente ha escrito algo.
- if [ -z "$NUEVOUSU" ]
- then
- echo -e "\nDebe indicar un nombre de usuario."
- exit
- fi
- # También compruebo que el usuario no exista,
- # buscando líneas del passwd que comiencen por su nombre seguido de ":"
- # y contándolas.
- if [ `more /etc/passwd | grep ^"${NUEVOUSU}:" | wc -l` -eq 1 ]
- then
- echo -e "\n$NUEVOUSU ya existe; no se hará nada."
- exit
- fi
- # Solicito los datos opcionales:
- echo -en "\nIndique, si lo desea, el nombre completo del nuevo usuario: "
- read COMENTARIO
- # Si no ha escrito nombre completo, pongo el nombre de login
- if [ -z "$COMENTARIO" ]
- then
- COMENTARIO="$NUEVOUSU"
- fi
- echo -en "\nPuede, también si lo desea, incluir a $NUEVOUSU en un grupo distinto de users: "
- read GRUPOPRIN
- # Si no ha escrito un grupo principal, le pongo users como grupo
- if [ -z "$GRUPOPRIN" ]
- then
- GRUPOPRIN="users"
- fi
- # Ya tengo la información necesaria para proceder a crear el usuario.
- adduser --gecos "$COMENTARIO" --ingroup "$GRUPOPRIN" $NUEVOUSU 2> /dev/null
- # Conservo el código de error devuelto y si es distinto de 0 indico el error
- NUMERROR=$?
- if [ $NUMERROR -eq 0 ]
- then
- echo "$NUEVOUSU se ha creado correctamente."
- exit
- else
- echo "Se ha producido un error. No se creó $NUEVOUSU."
- echo "Consulte el error nº $NUMERROR en man adduser."
- exit
- fi
- # Si lo que quiere es eliminar usuarios...
- elif [ "$1" = "-e" ]
- then
- # compruebo los permisos del mismo modo que para añadir usuarios:
- if [ ! -w /etc/passwd ]
- then
- echo "No tiene permisos para eliminar usuarios del equipo. Use sudo"
- exit
- fi
- # Muestro la lista de usuarios:
- echo -n "Usuarios dados de alta en el equipo: "
- echo `more /etc/passwd | cut -d: -f1`
- echo -en "\nIndique el usuario a dar de baja: "
- read EXUSUARIO
- # Si el usuario que ha escrito no existe...
- if [ "`more /etc/passwd | cut -d: -f1 | grep ^"$EXUSUARIO"$`" != "$EXUSUARIO" ]
- then
- echo "$EXUSUARIO no existe, compruebe que ha escrito correctamente el nombre del usuario a eliminar."
- exit
- fi
- # Si existe, pregunto si se quiren eliminar también sus archivos
- echo -en "\n¿Quiere eliminar también sus archivos? s/n "
- read OPCION
- if [ "$OPCION" = "s" -o "$OPCION" = "S" ]
- then
- deluser --remove-all-files $EXUSUARIO 2> /dev/null
- NUMERROR=$?
- if [ $NUMERROR -eq 0 ]
- then
- echo -e "\nEl usuario $EXUSUARIO y todos sus archivos han sido eliminados correctamente."
- exit
- else
- echo -e "\nSe produjo un error."
- echo "Consulte en man deluser el número de error $NUMERROR"
- exit
- fi
- else
- deluser $EXUSUARIO 2> /dev/null
- NUMERROR=$?
- if [ $NUMERROR -eq 0 ]
- then
- echo -e "\nEl usuario $EXUSUARIO ha sido eliminado correctamente."
- exit
- else
- echo -e "\nSe produjo un error."
- echo "Consulte en man deluser el número de error $NUMERROR"
- exit
- fi
- fi
- # En el caso de que la opción no sea ninguna de las anteriores
- # indico el error y muestro la sintaxis adecuada
- else
- echo "$1 no es una opción válida para el script $0."
- echo "Sintaxis incorrecta; "
- echo "Uso: $0 [-v | -a | -e]"
- echo -e "-v\tMuestra los usuarios que pueden iniciar sesión."
- echo -e "-a\tPermite añadir usuarios al sistema."
- echo -e "-e\tPermite eliminar usuarios del sistema."
- exit
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement