Guest User

Gestión Básica de usuarios en linux

a guest
Dec 6th, 2010
7,314
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2. sleep 1
  3. echo
  4. echo "*****************************************************************************"
  5. echo "*                                                                           *"
  6. echo "* Script para gestionar usuarios a traves de un GUI    >> GESTUSERS <<      *"
  7. echo "*                                                                           *"
  8. echo "* Fecha y hora de la ejecución del Script                                   *"
  9. echo "* `date +%d-%m-%Y`   -   `date +%H:%M:%S`                                   *"
  10. echo "*                                                                           *"
  11. echo "* Puedes modificarlo y/o distribuirlo bajo los términos de la licencia GPL  *"
  12. echo "*                                                                           *"
  13. echo "* Autor: Alejandro Alcalde (algui91) - Mar. '10                      *"
  14. echo "*                                                                           *"
  15. echo "*****************************************************************************"
  16. sleep 1
  17.  
  18. # Gestion de usuarios grafica
  19. function main(){
  20.     while [ true ]
  21.     do
  22.         opcion=`zenity --list --height=300 --radiolist \
  23.                 --title="Elija una opcion" \
  24.                     --column="" --column="Opcion" \
  25.                 "FALSE" "1 Crear Usuario con home" \
  26.                 "TRUE" "2 Crear grupo" \
  27.                     "FALSE" "3 Añadir usuario/Grupo" \
  28.             "FALSE" "4 Eliminar Usuario/Grupo" \
  29.                 "FALSE" "5 Eliminar Usuario" \
  30.                 "FALSE" "6 Mostrar usuarios de un grupo" \
  31.                     "FALSE" "7 Eliminar grupo" \
  32.                 "FALSE" "8 Salir"`
  33.         if [ "$?" == 1 ] ; then seleccion 7 ; fi #Si se pulsa cancelar y cerrar, lo evio al log
  34.         seleccion `echo $opcion | cut -c 1` "$opcion" # Corto la opcion para quedarme solo con el numeros
  35.     done
  36. }
  37. ###################################################################################
  38. function seleccion(){
  39.     case $1 in
  40.     1)
  41.         user=`zenity --entry --width=300 --text "Nombre del usuario" --title "$2"`
  42.         cod=`echo $?`
  43.         if [ $cod == 0 ] #Pulso aceptar o cerrar
  44.         then
  45.             sudo adduser $user
  46.             if [ "$?" == 1 ] # si la salida de adduser es 1, es que el usuario existe
  47.             then
  48.                 zenity --warning --title="AddUser" --text="El usuario $user ya existe"
  49.             else
  50.                 echo "creo el usuario $user" >> /tmp/log        #Almaceno las operaciones del usuario
  51.                 progress "Creando usuario" $user "$2"
  52.             fi
  53.         elif [ $cod == -1 ] #Error
  54.         then
  55.             zenity --error --no-wrap --title="Error" --text="Ocurrio un error"
  56.         fi 
  57.         ;;
  58.     2)
  59.         group=`zenity --entry --width=300 --text "Nombre del grupo" --title "$2"` #Recogo el nombre del nuevo grupo
  60.         cod=`echo $?`
  61.         if [ $cod == 0 ] #Pulso aceptar o cerrar
  62.         then
  63.             creargrupo "$group" #llamo a mi funcion crear grupo
  64.             if [ "$?" == 0 ] # si creargrupo devuevle 0, todo correcto
  65.             then
  66.                 progress "Creando grupo" $group "$2"
  67.                 echo "creo el grupo $group" >> /tmp/log
  68.             fi
  69.         elif [ $cod == -1 ] #Error
  70.         then
  71.             zenity --error --no-wrap --title="Error" --text="Ocurrio un error"
  72.         fi
  73.         ;;
  74.     3)
  75.         listaUser=`cat /etc/passwd | cut -d: -f1 | sort` #extraigo del archivo passwd una lista de los usuarios ordenada
  76.         user=`zenity --list --height=300 --title="Elija un usuario" --column="USER" $listaUser` #Meto los usuarios en el list
  77.         cod=`echo $?`
  78.         if [ $cod == 0 ] #Pulso Aceptar
  79.         then
  80.             lsgrp=`cat /etc/group | cut -d: -f1 | sort`
  81.             grp=`zenity --list --height=300 --title="Elija un grupo" --column="GRUPOS" $lsgrp`
  82.             sudo usermod -aG $grp $user # -a de append, que no lo quite de su anterior grupo, y -G para agregarlo a otro grupo como secundario
  83.             zenity --info --no-wrap --title="$2" --text="Añadió a \'$user\' al grupo $grp"
  84.             echo "Añadió a $user al grupo $grp" >> /tmp/log
  85.         elif [ $cod == -1 ] #Error
  86.         then
  87.             zenity --error --no-wrap --title="Error" --text="Ocurrio un error"
  88.         fi
  89.         ;;
  90.     4)
  91.         listaUser=`cat /etc/passwd | cut -d: -f1 | sort`
  92.         user=`zenity --list --height=300 --title="Elija un usuario" --column="USER" $listaUser`
  93.         cod=`echo $?`
  94.         if [ $cod == 0 ] #Pulso Aceptar
  95.         then
  96.             lsgrp=`cat /etc/group | cut -d: -f1 | sort`
  97.             grp=`zenity --list --height=300 --title="Elija un grupo" --column="GRUPOS" $lsgrp`
  98.             sudo deluser $user $grp # pasandole a deluser un usuario y un grupo, borra al usuario del grupo
  99.             zenity --info --no-wrap --title="$2" --text="Eliminó a \'$user\' del grupo $grp"
  100.             echo "Eliminó a $user del grupo $grp" >> /tmp/log
  101.         elif [ $cod == -1 ] #Error
  102.         then
  103.             zenity --error --no-wrap --title="Error" --text="Ocurrio un error"
  104.         fi
  105.         ;;
  106.     5)
  107.         listaUser=`cat /etc/passwd | cut -d: -f1 | sort`
  108.         user=`zenity --list --height=300 --title="Elija una opcion" --column="USER" $listaUser`
  109.         cod=`echo $?`
  110.         if [ $cod == 0 ] #Pulso aceptar o cerrar
  111.         then
  112.             zenity --question --title="deluser" --text="Borrar home de $user?"
  113.             if [ $? == 0 ]
  114.             then
  115.                 sudo deluser $user --remove-home
  116.                 echo "Elimino el usuario $user con su home" >> /tmp/log
  117.                 progress "Eliminando Usuario" $user "$2"
  118.             else
  119.                 sudo deluser $user
  120.                 echo "Elimino el usuario $user y no su home" >> /tmp/log
  121.                 progress "Eliminando Usuario" $user "$2"
  122.             fi
  123.         elif [ $cod == -1 ] #Error
  124.         then
  125.             zenity --error --no-wrap --title="Error" --text="Ocurrio un error"
  126.         fi
  127.         ;;
  128.     6)
  129.         lsgrp=`cat /etc/group | cut -d: -f1 | sort`
  130.         grp=`zenity --list --height=300 --title="Elija un grupo" --column="GRUPOS" $lsgrp`
  131.         cod=`echo $?`
  132.         if [ $cod == 0 ] #Pulso Aceptar
  133.         then
  134.             member=`cat /etc/group | grep $grp: | cut -d: -f4 | sort` #Localizo el nombre del grupo con grep $grp: y corto los miembros
  135.             zenity --info --no-wrap --title="$2" --text="El grupo $grp tiene de miembros: $member"
  136.            
  137.             echo "Listó los miembros de $grp" >> /tmp/log
  138.         elif [ $cod == -1 ] #Error
  139.         then
  140.             zenity --error --no-wrap --title="Error" --text="Ocurrio un error"
  141.         fi
  142.         ;;
  143.     7)
  144.         lsgrp=`cat /etc/group | cut -d: -f1 | sort`
  145.         grp=`zenity --list --height=300 --title="Elija un grupo" --column="GRUPOS" $lsgrp`
  146.         cod=`echo $?`
  147.         if [ $cod == 0 ] #Pulso Aceptar
  148.         then
  149.             gksudo delgroup $grp
  150.             zenity --info --no-wrap --title="$2" --text="El grupo $grp ha sido eliminado"
  151.            
  152.             echo "Elimino el grupo $grp" >> /tmp/log
  153.         elif [ $cod == -1 ] #Error
  154.         then
  155.             zenity --error --no-wrap --title="Error" --text="Ocurrio un error"
  156.         fi
  157.         ;;     
  158.            
  159.     8)
  160.         if [ -e /tmp/log ]
  161.         then
  162.            
  163.             zenity --text-info \
  164.                           --title="LOG" \
  165.                           --filename=/tmp/log
  166.                           --editable 2>/tmp/tmp.txt
  167.             rm /tmp/log /tmp/tmp.txt
  168.            
  169.            fi
  170.            exit
  171.         ;;
  172. esac
  173. }
  174. ###################################################################################
  175. #Funcion para usar la barra de progreso
  176. function progress(){
  177.         (
  178.         echo "0" ; sleep 1
  179.             echo "# $1" ; sleep 1
  180.             echo "25" ; sleep 1
  181.             echo "75" ; sleep 1
  182.             echo "100" ; sleep 1
  183.             echo "# Finalizado"
  184.            
  185.             ) |
  186.             zenity --progress \
  187.             --title="$3" \
  188.             --text="" \
  189.             --percentage=0 \
  190.             --width=300
  191.  
  192.             if [ "$?" = -1 ] ; then
  193.                 zenity --error \
  194.                   --text="Suma Abortada."
  195.             fi
  196. }
  197. ###################################################################################
  198. function creargrupo(){
  199.  
  200.     gksudo groupadd $1
  201.     if [ "$?" == 9 ]
  202.     then
  203.         zenity --warning --title="Groupadd" --text="El grupo \'$1\' ya existe"
  204.         return 1
  205.     else
  206.         return 0
  207.     fi
  208. }
  209. ###################################################################################
  210. main
RAW Paste Data