View difference between Paste ID: q0DGLPp4 and 2UbqU3Yk
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