SHOW:
|
|
- or go back to the newest paste.
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 |