Advertisement
angeldp

userLin.sh

Jun 23rd, 2015
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.88 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # userLin.sh
  4. # angeldp
  5. #
  6. # Script de gestión de usuarios.
  7. # Con -v mostrará los usuarios que pueden iniciar sesión en el equipo;
  8. # con -a añadirá nuevos usuarios; y con -e eliminará el usuario que se indique.
  9. #
  10. # En primer lugar comprobaré los parámetros:
  11. clear
  12. # Si no se ha pasado un parámetro
  13. # señalo el error e indico la sintaxis correcta.
  14. if [ $# -ne 1 ]
  15.     then
  16.     echo "Sintaxis incorrecta; "
  17.     echo "Uso: $0 [-v | -a | -e]"
  18.     echo -e "-v\tMuestra los usuarios que pueden iniciar sesión."
  19.     echo -e "-a\tPermite añadir usuarios al sistema."
  20.     echo -e "-e\tPermite eliminar usuarios del sistema."
  21.     exit
  22. fi
  23. # Si se quieren ver los usuarios
  24. # muestro un mensaje de espera y la lista con los nombres
  25. # del primer campo del fichero /etc/passwd; siempre y cuando
  26. # las líneas no terminen en false (grep -v "false"$)
  27. if [ "$1" = "-v" ]
  28.     then
  29.     echo -n "Generando el listado de usuarios "
  30.     echo -n ". "
  31.     sleep 1
  32.     echo -n ". "
  33.     sleep 1
  34.     echo "."
  35.     USUARIOS=`grep -v "false"$ /etc/passwd | cut -d: -f1`
  36.     # Si la variable usuarios queda vacía es que se ha producido un error:
  37.     if [ -z "$USUARIOS" ]
  38.         then
  39.         echo "Se ha producido un error al leer de /etc/passwd"
  40.         exit
  41.     fi
  42.     echo $USUARIOS
  43. # Si lo que se desea es añadir usuarios...
  44. elif [ "$1" = "-a" ]
  45.     then
  46.     # deberé comprobar que quien ejecuta el script puede añadir usuarios
  47.     # para ello miraré si puede editar /etc/passwd
  48.     if [ ! -w /etc/passwd ]
  49.         then
  50.         echo "No tiene permisos para añadir usuarios al equipo. Use sudo"
  51.         exit
  52.     fi
  53.     echo -n "Indique el nombre de usuario a añadir: "
  54.     read NUEVOUSU
  55.     # Comprobaré que efectivamente ha escrito algo.
  56.     if [ -z "$NUEVOUSU" ]
  57.         then
  58.         echo -e "\nDebe indicar un nombre de usuario."
  59.         exit
  60.     fi
  61.     # También compruebo que el usuario no exista,
  62.     # buscando líneas del passwd que comiencen por su nombre seguido de ":"
  63.     # y contándolas.
  64.     if [ `more /etc/passwd | grep ^"${NUEVOUSU}:" | wc -l` -eq 1 ]
  65.         then
  66.         echo -e "\n$NUEVOUSU ya existe; no se hará nada."
  67.         exit
  68.     fi
  69.     # Solicito los datos opcionales:
  70.     echo -en "\nIndique, si lo desea, el nombre completo del nuevo usuario: "
  71.     read COMENTARIO
  72.     # Si no ha escrito nombre completo, pongo el nombre de login
  73.     if [ -z "$COMENTARIO" ]
  74.         then
  75.         COMENTARIO="$NUEVOUSU"
  76.     fi
  77.     echo -en "\nPuede, también si lo desea, incluir a $NUEVOUSU en un grupo distinto de users: "
  78.     read GRUPOPRIN
  79.     # Si no ha escrito un grupo principal, le pongo users como grupo
  80.     if [ -z "$GRUPOPRIN" ]
  81.         then
  82.         GRUPOPRIN="users"
  83.     fi
  84.     # Ya tengo la información necesaria para proceder a crear el usuario.
  85.     adduser --gecos "$COMENTARIO" --ingroup "$GRUPOPRIN" $NUEVOUSU 2> /dev/null
  86.     # Conservo el código de error devuelto y si es distinto de 0 indico el error
  87.     NUMERROR=$?
  88.     if [ $NUMERROR -eq 0 ]
  89.         then
  90.         echo "$NUEVOUSU se ha creado correctamente."
  91.        exit
  92.     else
  93.         echo "Se ha producido un error. No se creó $NUEVOUSU."
  94.         echo "Consulte el error nº $NUMERROR en man adduser."
  95.         exit
  96.     fi
  97. # Si lo que quiere es eliminar usuarios...
  98. elif [ "$1" = "-e" ]
  99.     then
  100.     # compruebo los permisos del mismo modo que para añadir usuarios:
  101.     if [ ! -w /etc/passwd ]
  102.         then
  103.         echo "No tiene permisos para eliminar usuarios del equipo. Use sudo"
  104.         exit
  105.     fi
  106.     # Muestro la lista de usuarios:
  107.     echo -n "Usuarios dados de alta en el equipo: "
  108.     echo `more /etc/passwd | cut -d: -f1`
  109.     echo -en "\nIndique el usuario a dar de baja: "
  110.     read EXUSUARIO
  111.     # Si el usuario que ha escrito no existe...
  112.     if [ "`more /etc/passwd | cut -d: -f1 | grep ^"$EXUSUARIO"$`" != "$EXUSUARIO" ]
  113.         then
  114.         echo "$EXUSUARIO no existe, compruebe que ha escrito correctamente el nombre del usuario a eliminar."
  115.         exit
  116.     fi
  117.     # Si existe, pregunto si se quiren eliminar también sus archivos
  118.     echo -en "\n¿Quiere eliminar también sus archivos? s/n "
  119.     read OPCION
  120.     if [ "$OPCION" = "s" -o "$OPCION" = "S" ]
  121.         then
  122.         deluser --remove-all-files $EXUSUARIO 2> /dev/null
  123.         NUMERROR=$?
  124.         if [ $NUMERROR -eq 0 ]
  125.             then
  126.             echo -e "\nEl usuario $EXUSUARIO y todos sus archivos han sido eliminados correctamente."
  127.             exit
  128.         else
  129.             echo -e "\nSe produjo un error."
  130.             echo "Consulte en man deluser el número de error $NUMERROR"
  131.             exit
  132.         fi
  133.     else
  134.         deluser $EXUSUARIO 2> /dev/null
  135.         NUMERROR=$?
  136.         if [ $NUMERROR -eq 0 ]
  137.             then
  138.             echo -e "\nEl usuario $EXUSUARIO ha sido eliminado correctamente."
  139.             exit
  140.         else
  141.             echo -e "\nSe produjo un error."
  142.             echo "Consulte en man deluser el número de error $NUMERROR"
  143.             exit
  144.         fi
  145.     fi
  146. # En el caso de que la opción no sea ninguna de las anteriores
  147. # indico el error y muestro la sintaxis adecuada
  148. else
  149.     echo "$1 no es una opción válida para el script $0."
  150.     echo "Sintaxis incorrecta; "
  151.     echo "Uso: $0 [-v | -a | -e]"
  152.     echo -e "-v\tMuestra los usuarios que pueden iniciar sesión."
  153.     echo -e "-a\tPermite añadir usuarios al sistema."
  154.     echo -e "-e\tPermite eliminar usuarios del sistema."
  155.     exit
  156. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement