source: zero-center/trunk/fuentes/install-files/usr/bin/zero-installer @ 1294

Last change on this file since 1294 was 1294, checked in by Juanma, 3 years ago

replace critical by normal and add allow-unauthorized

  • Property svn:executable set to *
File size: 10.4 KB
Line 
1#!/bin/bash
2
3export TEXTDOMAIN="zero-center"
4
5MSG_INSTALLING=$(gettext "Installing")
6MSG_INSTALLED=$(gettext "Installed")
7MSG_REMOVING=$(gettext "Removing")
8MSG_REMOVED=$(gettext "Removed")
9MSG_FINISH_INSTALLED=$(gettext "has been INSTALLED in your system, and you can view the log in")
10MSG_FINISH_SYSTEM1=$(gettext "has been")
11MSG_FINISH_SYSTEM=$(gettext "in your system, and you can view the log in")
12
13
14
15
16        function helper {
17                #Aqui listaremos las opciones del helper
18                if [ $1 = "--help" ] || [ $1 = "-h" ] || [ "$1" = "" ]; then
19                        echo
20                        echo "----ZERO-INSTALLER-HELPER----"
21                        echo
22                        echo "zero-installer <arg1> <arg2>"
23                        echo
24                        echo "arg1: Is the option to the package, install or remove"
25                        echo "arg2: Is the package"
26                        echo "arg3: -d option, indicate if you want install the package with dpkg"
27                        echo
28                        echo "example: zero-installer install hotpotatoes"
29                        echo
30                        echo "--------------------------------------------"
31                        echo
32                        echo "You can install deb packages with dpkg"
33                        echo "if you define argument 1 like -d"
34                        echo
35                        echo "example 2: zero-installer -d /tmp/google.deb"
36                        echo
37                        echo "--------------------------------------------"
38                        echo
39                        echo "You can define package list in a file with 2 arguments, for apt"
40                        echo
41                        echo  "<arg1> <arg2>"
42                        echo
43                        echo "<arg1> The name of package"
44                        echo "<arg> Instruction for package, install or remove"
45                        echo
46                        echo "zero-installer -l example.txt"
47                        echo
48                        exit 0
49                fi
50        }
51       
52       
53       
54        function main {
55               
56               
57                if [ "$1" == "-d" ]; then
58                       
59                        touch /tmp/zero-install.log
60                        NAME_PACK=$(echo $2 | rev | cut -d "/" -f1 | rev)                       
61                        #En segundo plano realizaremos la instalacion del paquete almacenando su salida en nuestro log, eliminando nuestro fichero ayuda para salir del bucle.
62                        (dpkg -i $2 >> /tmp/zero-installer.log ; rm /tmp/zero-install.log) &
63                        echo "................................................................................." >> /tmp/zero-installer.log
64                        echo " " >> /tmp/zero-installer.log
65                        echo "Zero-center-------Your instruction is----------dpkg -i $2" >> /tmp/zero-installer.log
66                        echo "................................................................................." >> /tmp/zero-installer.log
67
68                        #Mientras que el fichero de ayuda existe es que estamos instalando
69                        #Cuando ya no exista saldremos del while
70                                while [ -f  "/tmp/zero-install.log" ]; do
71                                        #En la variable PERCENT almacenamos el tanto por cien que llevamos de descarga
72                                        #accediento a la ultima linea escrita en el fichero de ayuda y seleccionando solo el dato que necesitamos.
73                                        VAR=$( tail -1 /tmp/zero-installer.log  2>/dev/null )
74                                        #Hacemos echo de los datos que necesita el zenity
75                                        echo "#$MSG_INSTALLING $2.......$VAR" | cut -c1-85
76                                        #por ultimo entubamos la salida al zenity progress para que nos muestre el resultado en pantalla
77                                done | zenity --progress  --auto-close --pulsate --width 500 --title="Zero-Center-Installer" --no-cancel > /dev/null 2>&1
78                               
79                        echo "Zero-center-------Your package $NAME_PACK has been INSTALLED in your system"
80                        echo " " >> /tmp/zero-installer.log
81                        echo "Zero-center-------Your package $NAME_PACK has been INSTALLED in your system" >> /tmp/zero-installer.log
82                        echo "________________________________________________________________________________" >> /tmp/zero-installer.log
83                        echo " " >> /tmp/zero-installer.log
84                        su -c "notify-send -t 2000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' '$NAME_PACK $MSG_FINISH_INSTALLED /tmp/zero-installer.log'" $USER
85                       
86                        exit 0
87               
88                else
89                        #Creamos un fichero que nos servirá de ayuda para escribir y leer el tanto por cien del fichero descargado
90                        touch /tmp/zero-install.log
91                       
92                        INSTRUCCION=$1
93                       
94                        if [ "$INSTRUCCION" = "deinstall" ];then
95                                INSTRUCCION="remove"
96                        fi
97                       
98                        #En segundo plano realizaremos la instalacion del paquete almacenando su salida en nuestro log, eliminando nuestro fichero ayuda para salir del bucle.
99                        (apt-get $INSTRUCCION -y --allow-unauthenticated $2 >> /tmp/zero-installer.log ; rm /tmp/zero-install.log) &
100                        echo "................................................................................." >> /tmp/zero-installer.log
101                        echo " " >> /tmp/zero-installer.log
102                        echo "Zero-center-------Your instruction is----------apt-get $INSTRUCCION -y --allow-unauthenticated $2" >> /tmp/zero-installer.log
103                        echo "................................................................................." >> /tmp/zero-installer.log
104
105                        #Mientras que el fichero de ayuda existe es que estamos instalando
106                        #Cuando ya no exista saldremos del while
107                                while [ -f  "/tmp/zero-install.log" ]; do
108                                        #En la variable PERCENT almacenamos el tanto por cien que llevamos de descarga
109                                        #accediento a la ultima linea escrita en el fichero de ayuda y seleccionando solo el dato que necesitamos.
110                                        VAR=$( tail -1 /tmp/zero-installer.log  2>/dev/null )
111                                        #Hacemos echo de los datos que necesita el zenity
112                                        echo "#$ACTION $2.......$VAR" | cut -c1-85
113                                        #por ultimo entubamos la salida al zenity progress para que nos muestre el resultado en pantalla
114                                done | zenity --progress  --auto-close --pulsate --width 500 --title="Zero-Center-Installer" --no-cancel > /dev/null 2>&1
115                       
116                        echo "Zero-center-------Your package $2 has been $FINISHED in your system"
117                        echo " " >> /tmp/zero-installer.log
118                        echo "Zero-center-------Your package $2 has been $FINISHED in your system" >> /tmp/zero-installer.log
119                        echo "________________________________________________________________________________" >> /tmp/zero-installer.log
120                        echo " " >> /tmp/zero-installer.log
121                        su -c "notify-send -t 2000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' '$2 $MSG_FINISH_SYSTEM1 $FINISHED $MSG_FINISH_SYSTEM /tmp/zero-installer.log'" $USER
122                fi
123                }
124       
125       
126       
127        function check_removed {
128               
129                #Testeamos si el paquete esta instalado, no haciendo nada en el caso afirmativo o instalandolo en el caso negativo.
130                TEST=$( dpkg-query -s $2 2> /dev/null| grep Status | cut -d " " -f 4 )
131                if [ "$TEST" = 'installed' ]; then
132                        echo "Package $2 already installed, do nothing"
133                        echo "Package $2 already installed, do nothing" >> /tmp/zero-installer.log
134                        echo "________________________________________________________________________________" >> /tmp/zero-installer.log
135                        echo " " >> /tmp/zero-installer.log
136                else
137                        main $1 $2                     
138                fi
139               
140        }
141       
142        function check_install {
143               
144                #Testeamos si el paquete esta quitado, no haciendo nada en el caso afirmativo o desinstalandolo en el caso negativo
145                TEST=$( dpkg-query -s $2 2> /dev/null| grep Status | cut -d " " -f 4 )
146                if [ "$TEST" != 'installed' ]; then
147                        echo "Package $2 already removed, do nothing"
148                        echo "Package $2 already removed, do nothing" >> /tmp/zero-installer.log
149                        echo "________________________________________________________________________________" >> /tmp/zero-installer.log
150                        echo " " >> /tmp/zero-installer.log
151                else
152                        main $1 $2     
153                fi
154       
155               
156        }
157       
158        function check_package {
159               
160                if [ $1 = "install" ] ; then
161                        ACTION="$MSG_INSTALLING"
162                        FINISHED="$MSG_INSTALLED"
163                        check_removed $1 $2
164                else
165                        ACTION="$MSG_REMOVING"
166                        FINISHED="$MSG_REMOVED"
167                        check_install $1 $2
168                fi
169        }
170       
171       
172        function check_parameters {
173             
174                #En esta funcion testeamos los parametros para que ambos sean coherentes
175                #Testeamos que el primer parámetro sea uno de los permitidos
176                if [ "$1" != "install" -a "$1" != "remove"  -a "$1" != "deinstall" ] ;then
177                        echo "You define a wrong action for your package, please check it. Now abort zero-installer command" >> /tmp/zero-installer.log
178                        helper -h
179                fi
180                #Testeamos el segundo parametro comprobando que existe en el repositorio, sino abortamos la instruccion.
181                LANG=en apt-cache show $2 | grep -i Version
182                if [ "$?" != "0" ]; then
183                        su -c "notify-send -t 2000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' 'Impossible to install $2, it dont exists in your repositories, abort zero-installer command'" $USER
184                        echo "Your package $2 don't exists in your repositories, abort zero-installer command"
185                        echo "Your package $2 don't exists in your repositories, abort zero-installer command" >> /tmp/zero-installer.log
186                        #su -c "notify-send -t 2000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' 'Your package $2 DO NOT EXISTS in your repositories, abort zero-installer command, and you can view the log in /tmp/zero-installer.log. If you cannot resolve the problem please contact with Lliurex Team at http://mestreacasa.gva.es/web/lliurex/forums'" $USER
187                        exit 1
188                fi
189        }
190       
191       
192        function check_list {
193       
194                #Testeamos si el tercer parametro nos indica dpkg y lo lanzamos ya
195                if [ "$1" == "-d" ]; then
196                        main "$1" "$2"
197                fi
198               
199                #Compruebo que es una lista y si lo es la recorro linea a linea
200                if [ "$1" = "-l"  ]; then
201                        oldIFS=$IFS     # conserva el separador de campo
202                        IFS=$'\n'
203                        for line in $(cat $2); do
204                                #En cada linea obtengo el paquete y la instruccion a realizar
205                                PACKAGE=$( echo "$line" | awk '1 { print  $1 }' )
206                                INSTRUCTION=$( echo "$line" | awk '1 { print  $2 }' )
207                                echo "You want $INSTRUCTION from your system this package, $PACKAGE"
208                                echo "You want $INSTRUCTION from your system this package, $PACKAGE" >> /tmp/zero-installer.log
209                                check_parameters $INSTRUCTION $PACKAGE
210                                check_package $INSTRUCTION $PACKAGE
211                        done
212                        IFS=$old_IFS
213                        exit 0
214                fi                     
215        }
216       
217       
218###################PROGRAMA PRINCIPAL#######################
219
220#Log para el zero-center
221if [ -f /tmp/zero-installer.log ]; then
222        rm  /tmp/zero-installer.log
223fi
224
225echo " " >> /tmp/zero-installer.log
226echo "------Zero-Installer-Resume--------" >> /tmp/zero-installer.log
227echo "" >> /tmp/zero-installer.log
228echo "If you detect any problem please contact with Lliurex Team lliurex@lliurex.net" >> /tmp/zero-installer.log
229echo "Or submit it in http://mestreacasa.gva.es/web/lliurex/forums" >> /tmp/zero-installer.log
230echo "" >> /tmp/zero-installer.log
231
232#Dentro del programa principal lo primero que hago es mirar si es una lista     
233check_list $1 $2
234#Chequeo si los parametros son correctos
235check_parameters $1 $2
236#Chequeo si el paquete esta instalado o quitado y hago lo que se me pide, si no esta hecho de antes.
237check_package $1 $2
238
239exit 0
240
241
Note: See TracBrowser for help on using the repository browser.