Linux/Unix Shell Scripting - Duda con Dialog Box Gauge

   
Vista:
Imágen de perfil de 4all

Duda con Dialog Box Gauge

Publicado por 4all (7 intervenciones) el 29/06/2014 22:29:02
- Hola nuevamente estimados amigos

- En esta ocasión me encuentro en un pequeño callejón sin salida
con un Box Gauge de porcentaje progresivo.



- La idea es poderle integrar la instalación propiamente dicha
o la totalidad de las lineas del código para a medida que se
vaya ejecutando el script el Gauge progrese según lo haga
la ejecución de los comandos en segundo plano.

- Para una verdadera solución o alternativa lo ideal sería
que ademas fuera en modo verbose con una ventana
que indicara los pasos descritos en el script , los echos " ".



- Actualmente solo veo la opción o posibilidad de agregar el
código del Gauge anteriormente al comienzo de la ejecución
de los comandos...., siendo mas un añadido sin funcionalidad
que otra cosa.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(
c=10
while [ $c -ne 100 ]
    do
        echo $c
        echo "###"
        echo "$c %"
        echo "###"
        ((c+=10))
        sleep 1
done
) |
dialog --title "Instalando " --gauge "Por favor espera ...." 10 100 0
clear

##########################################################

- Por otro lado al finalizar la instalación no logro equiparar el porcentaje
progresivo a lo deseado, en este caso 5 s.



- Por mas que juego con los valores o me voy a unos saltos muy grandes
en el progreso o me quedo demasiado corto.



- Agradecer de antemano cualquier indicación o alternativa a este Gauge
que pueda ser valido para el cometido que se busca.

- Cordiales Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Duda con Dialog Box Gauge

Publicado por xve (254 intervenciones) el 30/06/2014 11:08:34
hola 4all, nos puedes mostrar el código para probarlo?

Yo lo he utilizado en Python, pero no en bash... si nos adjuntas el código o un ejemplo para poder probarlo, intento indicarte como hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 4all

Duda con Dialog Box Gauge

Publicado por 4all (7 intervenciones) el 30/06/2014 12:52:21
- Hola nuevamente

- Muchas gracias por tus indicaciones, ciertamente no cejo en el intento ,
estoy probando y testeando con un código que se aproxima mucho a lo que
se desea finalmente utilizando como base "While" :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
##
HOME="/home/allcap"
#
#
percent=10
(
while test $percent != 100
do
echo $percent
 
echo "XXX"
echo "Creando carpeta prueba1....."
mkdir $HOME/prueba1
echo "XXX"
echo "Finalizado !!"
echo "XXX"
echo "Creando carpeta prueba2....."
mkdir $HOME/prueba2
echo "XXX"
echo "Finalizado !!"
echo "XXX"
 
percent=`expr $percent + 30`
sleep 1
done
) |
dialog --title "Instalacion en progreso....." --gauge "This is how a gauge appears on the command line" 10 80 0


- Se va progresando ... pero de un contratiempo paso a otro, en esta ocasión
no se adecua el progreso con lo indicado en la barra en el
paso a paso, solo finaliza el bucle una vez ha finalizado el %,
mientras no para de sobre-crear carpetas

1
percent=`expr $percent + 30





- Cordiales Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Duda con Dialog Box Gauge

Publicado por xve (254 intervenciones) el 30/06/2014 16:50:33
Gracias por compartirlo...

Segun yo veo, creo que es mas sencillo algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
##
HOME="/home/allcap"
#
#
echo "0" | dialog --title "Instalacion en progreso..." --gauge "Creando carpeta prueba1" 10 80 0
if [ ! -e  $HOME/prueba1 ];then
	mkdir $HOME/prueba1
fi
sleep 1
echo "50" | dialog --title "Instalacion en progreso..." --gauge "Creando carpeta prueba2" 10 80 0
if [ ! -e  $HOME/prueba2 ];then
	mkdir $HOME/prueba2
fi
sleep 1
echo "100" | dialog --title "Instalacion en progreso..." --gauge "Finalizado!!!" 10 80 0
sleep 1

Haber que te parece?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 4all

Duda con Dialog Box Gauge

Publicado por 4all (7 intervenciones) el 30/06/2014 17:51:19
- Hola estimado amigo

- Muchísimas gracias por la ayuda e indicaciones,
ciertamente la opción que planteas es muy interesante
y práctica, a la hora de crear directorios .

- Lógicamente el código que tengo compilado para la
instalación es extremadamente largo y muchas líneas
no corresponden con la creación de carpetas.

- Lo indicado por mi es a modo de ejemplo sobre como
podría ejecutar un Dialog Gauge Box que señale en todo
momento el porcentaje según la línea en que se encuentre
la instalación basandose en los "echos" que encierre
dentro del código entre XXX y XXX, por ejemplo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
##
HOME="/home/allcap"
#
#
percent=10
(
while test $percent != 100
do
echo $percent
 
echo "XXX"
echo "   **** Copiando script ****"
echo "XXX"
;;
;;
echo "XXX"
echo "  echo "   **** Editando crontabs, recuerda no usar crontab -e ****"
echo "XXX"
;;
;;
echo "XXX"
echo "   **** Instalando el Software requerido ****"
echo "XXX"
;;
;;
echo "XXX"
echo "   **** Instalando Software adicional ****"
echo "XXX"
;;
;;
 
percent=`expr $percent + 30`
sleep 1
done
) |
dialog --title "Instalacion " --gauge "Instalacion en progreso...." 10 80 0
 
clear
############################################################
En esta parte crearía un salto hacia otros "inputBox" con las opciones de red :
############################################################

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
echo "   **** El Servidor requiere de una IP estática y una DNS ****"
echo "   **** Por favor introduce los datos IP, Mascara de red, Puerta de enlace y DNS ahora ****"
echo "   **** ¿Que IP tienes reservada para este Servidor? ****"
read IP
echo "   **** ¿Que Mascara de red utilizará esta conexión? ( Por lo general suele ser 255.255.255.0) ****"
read SUB
echo "   **** ¿Cual es la Puerta de enlace?(IP del router) ****"
read GATE
echo "$IP" >> /tmp/iptemp
CAST=$(grep -o '[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}' /tmp/iptemp)
slep 1s
echo "# The loopback network interface" > /etc/network/interfaces
echo "auto lo" >> /etc/network/interfaces
echo "iface lo inet loopback" >> /etc/network/interfaces
echo "" >> /etc/network/interfaces
echo "# The primary network interface" >> /etc/network/interfaces
echo "allow-hotplug eth0" >> /etc/network/interfaces
echo "auto eth0" >> /etc/network/interfaces
echo "iface eth0 inet static" >> /etc/network/interfaces
echo "address $IP" >> /etc/network/interfaces
echo "netmask $SUB" >> /etc/network/interfaces
echo "broadcast $CAST.255" >> /etc/network/interfaces
echo "gateway $GATE" >> /etc/network/interfaces
echo "   **** ¿Cual será la DNS del Servidor? ****"
read DNS
echo "nameserver $DNS" > /etc/resolv.conf
clear
echo "   **** La nueva configuración de red ya se encuentra activa ****"
clear

###############################################################



- Con redireccionamiento de salida hacia el comando "read IP"

1
2
3
dialog --title "Red - Opciones de red" \
--backtitle "Linux Shell Script Tutorial Example" \
--inputbox "Que IP tienes reservada para este Servidor ? " 8 60 2>read IP

- Y así con todos los redireccionamientos corrrespondientes a :
;;
;;
"read SUB"
"read GATE"
"read DNS"

- O en su defecto en caso de no funcionar directamente la salida
hacia el comando, creando variables:

IP="read IP"
SUB="read SUB
GATE="read GATE"
DNS="read DNS"

1
2
3
4
2>r$IP
2>$SUB
2>$GATE
2>$DNS


- Hasta finalizar con el último:



1
2
3
dialog --title "Red - Opciones de red" \
--backtitle "Linux Shell Script Tutorial Example" \
--inputbox "Cual sera la DNS para este Servidor ? " 8 60 2>read DNS

########################################################################

- La última parte ya la tengo creada con un Box "---yesno" sobre
la opción de salto a una función ( _hosting) en caso afirmativo o finalizando
con reinicio del Servidor en caso negativo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
clear
dialog --title "Host" --clear \
        --yesno " Deseas Instalar las opciones ahora ?" 6 70
 
case $? in
  0)
    while true; do
  _hosting
done
;;
  1)
    echo "No seleccionado.";;
  255)
    echo "ESC presionado.";;
esac
(
c=10
while [ $c -ne 100 ]
    do
        echo $c
        echo "###"
        echo "$c %"
        echo "###"
        ((c+=10))
        sleep 1
done
) |
dialog --title "Instalacion" --gauge "Instalacion finalizada, reiniciando el Servidor en 5 segundos...." 10 100 0
shutdown -r now

########################################################################

- Básicamente lo único que me falta es el Gauge en porcentaje progresivo
en base a los "echos" que encierre entre (echo "XXX" y echo "XXX") dentro del código
de la instalación.

- Afectuosos Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de 4all

Duda con Dialog Box Gauge

Publicado por 4all (7 intervenciones) el 01/07/2014 13:56:06
- Hola nuevamente amigos

- Finalmente creo haber localizado la solución, un poco extraña
pero al fin y al cabo se ejecuta el Dialog Box Gauge como se desea.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash
{ for I in 25; do
echo "XXX"
echo "Copiando script...."
echo "XXX"
echo $I
sleep 2
done
echo;
} |
dialog --title "Instalacion " --gauge "Instalacion en progreso...." 10 80 0
 
{ for I in 50; do
echo "XXX"
echo "Editando crontabs, recuerda no usar crontab -e...."
echo "XXX"
echo $I
sleep 2
done
echo;
} |
dialog --title "Instalacion " --gauge "Instalacion en progreso...." 10 80 0
 
{ for I in 75; do
echo "XXX"
echo "Instalando el Software requerido...."
echo "XXX"
echo $I
sleep 2
done
echo;
} |
dialog --title "Instalacion " --gauge "Instalacion en progreso...." 10 80 0
 
{ for I in 100; do
echo "XXX"
echo "Continuando con la instalacion...."
echo "XXX"
echo $I
sleep 2
done
echo;
} |
dialog --title "Instalacion " --gauge "Instalacion en progreso...." 10 80 0
 
clear
###########################################################

- Únicamente hay que adecuar el porcentaje individual de cada ejecución (echo "XXX" ;; echo"XXX" )
hasta llegar al final de la ejecución de los comandos con un 100 % sobre el último $I

- En el ejemplo he comenzado por un 25 %, adecuar según necesidades..



############################################################



- Ciertamente el no cejar en el intento algunas veces se puede llegar a obtener resultados
aceptables

- Desear y esperar que pueda ser de ayuda a quien lo necesite, muchas gracias.

- Cordiales Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Duda con Dialog Box Gauge

Publicado por xve (254 intervenciones) el 01/07/2014 19:25:12
Felicidades!!! lo veo muy correcto!!!

Gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar