ESCUELA DE COMPUTACIÓN
CICLO:01/2015
GUIA DE LABORATORIO #7
Nombre de la Practica: Instalación y manejo de dialog. Lugar de Ejecución: Laboratorio de Redes, Edificio 3 del CITT Tiempo Estimado: 2:30
MATERIA: Aplicaciones Para Redes
DOCENTES: Denis Altuve, Marvin Martínez.
I. OBJETIVOS Que el estudiante:
Pueda instalar la librería gráfica dialog.
Comprenda el manejo de las librerías.
Implemente cada una de las opciones según su necesidad.
II. INTRODUCCION TEORICA
El lenguaje de scripting puede ser una excelente herramienta para la administración de sistemas, brinda la flexibilidad propia del lenguaje con estas características y a su vez es muy potente.
Una de las herramientas más utilizadas por los administradores de sistemas tipo UNIX es el propio uso del interprete de comandos para generar shell script, siguiendo con la filosofía de usar pequeñas herramientas simples que hacen cosas puntuales para hacer grande algo más grande y complejo.
El interprete de comandos más usado en el mundo del Software Libre (y en UNIX privativos también ya que lo han adoptado) es el BASH o Bourne-again shell, como se prefiera reconocerlo. También se utiliza mucho el sh o Bourne shell.
Además de ser interpretes poderosos, son a su vez potentes lenguajes de shell script que permiten utilizar todas las herramientas disponibles desde la interface de comandos y que cuentan con estructuras similares a otros lenguajes compilados.
En este mundo de solo texto, se tiene el problema de que la interface de usuario no es muy cómoda que digamos, para un usuario común.
Por suerte existen formas de desarrollar con Bash o sh y tener una mejor interface con el uso de dialog y Xdialog (el primero para el entorno de caracteres y el segundo para X).
Dialog, cdialog y X-Dialog permiten el uso de ventanas y “cajas” para hacer la experiencia de interaccionar con un programa desarrollado en shell script más amena.
Su estructura es muy simple de comprender y cuenta con una serie de parámetros que le indicaran, al ser llamado el programa dialog desde el script, que es lo que tiene que mostrar.
¿Que es dialog?
A menudo queremos que nuestros programas se comuniquen de una manera mas interactiva con el usuario, pues bien para ello tenemos a dialog que es una utilidad para crear interfaces a shell script, u otros lenguajes como Perl. No es gráfico (utiliza nurses) así es que puede funcionar bien en consola.
Ncurses es una librería de programación que provee una API que permite al programador escribir interfaces basadas en texto.
Dialog tiene predefinidos varios tipos de ventanas: calendar, checklist, fselect, gauge,
infobox, inputbox, input- menu, menu, msgbox (message), password, radiolist, tailbox, tailboxbg, textbox, timebox, and yesno (yes/no).
Se elige en cada momento la que mejor se adecue a las necesidades presentadas.
Luego se tienes una serie de parámetros comunes a todas las ventanas. Titulo, texto y tamaño son las mas comunes. Luego, en función de que tipo de ventana hayamos elegido tendremos unas opciones especificas.
A la hora de recuperar los datos introducidos por el usuario en el dialog tendremos que usar la salida estándar o la salida estándar de errores, depende del tipo de dialogo. Si queremos saber si el usuario a pulsado cancelar tendremos que fijarnos en el estado de salida de dialog (con $? por ejemplo).
III. MATERIALES Y EQUIPO Para la realización de la guía de práctica se requerirá lo siguiente:
No. Requerimiento Cantidad
1 PC de escritorio con Linux 1
2 Guía de laboratorio 1
IV. PROCEDIMIENTO
Parte I
Instalación de dialog:
1. Primero podemos ver en nuestro equipo si ya se posee este paquete digitando el siguiente comando.
a. rpm -q dialog
b. dialog-2.1.2-1.1.fc3.rf,
si ya existe alguna versión en nuestro equipo, la linea b nos mostrara la versión del paquete instalada.
2. Si no existe ninguna version instalada en nuestro equipo me mostrar lo siguiente en la linea b. a. rpm -q dialog
b. package dialog is not installed
3. Para instalarlo solamente digitamos el siguiente comando y listo. 1. rpm -ivh dialog-1.0.20050306-1.i386.rpm
ó
2. yum install dialog
Si dialog se instalo correctamente, digitamos en consola la palabra dialog, lo que hará es mostrar sus diferentes opciones y los parámetros a utilizar.
Parte II
Comenzando a utilizar Dialog:
Parta poder utilizar las cajas de texto y las opciones comunes, siempre tiene que anteponerse la palabra dialog.
Digitar cada uno de los pasos que a continuación se presentan, interpretador y cualquier duda preguntar al docente:
1. msgbox :
Utilizado para mandar un mensaje en la cual se terminara hasta que el usuario de aceptar. Width=ancho.
Height=alto. SYNOPSIS
--msgbox text height width Ejemplo 1.
dialog --msgbox “Hola Mundo” 5 25
Ejemplo2.
2. infobox:
Utilizado para enviar mensajes al usuario. SYNOPSIS
--infobox text height width Ejemplo1.
dialog --sleep 4 --infobox "..::Espere por favor::.." 5 30
Ejemplo2.
dialog --backtitle "Espera" --title "Titulo" --sleep 4 --infobox "..::Espere por favor::.." 5 30
3.yesno:
Utilizado para esperar una respuesta del usuario en la cual se espera que sea si ó en caso contrario no.
SYNOPSIS
--yesno <text> <height> <width> Ejemplos
En estos ejemplos se mostraran dos formas de capturar la respuesta.
Forma 1 Forma 2
#!/bin/bash
dialog --yesno "Desea salir de la aplicacion" 5 35 a=$?
case $a in
0) echo "Apretaste si";; 1) echo "Apretaste no";; esac
#!/bin/bash
dialog --yesno "Desea salir de la aplicacion" 5 35;\ case $? in
0) echo "Apretaste si";; 1) echo "Apretaste no";; esac
4. Inputbox:
Utilizada para que el usuario ingrese alguna información, el resultado puede ser capturado por medio de la redirección estándar de errores (2>)que la enviara a un archivo, el cual le podremos dar un cat y guardarlo en una variable o puede ser capturada por medio de la salida estándar (stdout), directamente en una variable.
SYNOPSIS
--inputbox <text> <height> <width> [<init>]
Ejemplos. #!/bin/bash
dialog --inputbox "Ingrese su nombre" 5 25 2>algo.txt
var=$(cat algo.txt) echo $var
rm -f algo.txt #!/bin/bash
valor=$(dialog --stdout --inputbox "Ingrese su nombre" 0 0 )
echo $varlor
Los dos ejemplos anteriores daran el mismo resultado. 5. textbox:
Utilizado para abrir el contenido de un archivo en la caja de texto. SYNOPSIS
--textbox <file> <height> <width> Ejemplo.
Me muestra el contenido que tiene el archivo dialog.sh. dialog --textbox dialog.sh 15 40
6. passwordbox:
Utilizado para cuando se requieren contraseñas ingresadas por el usuario. SYNOPSIS
Ejemplo 1.
En este ejemplo cuando se digite los caracteres no serán vistos por el usuario, ademas el resultado sera redireccionado al archivo algo,txt.
dialog --passwordbox Password 8 40 2>algo.txt
Ejemplo 2.
En este ejemplo se puede observar que se le agrego la palabra --insecure que lo que hace es que se vean con asteriscos los caracteres digitados.
dialog --insecure --passwordbox Password 8 40 algo.txt Ejemplo 3.
En estos ejemplo se puede observar tres formas de capturar los datos
Forma1 Forma2
#!/bin/bash
if dialog --insecure --passwordbox "Ingrese su contraseña" 10 40 2>algo.txt
then
echo "Apestaste aceptar" echo -n "Password: " cat algo.txt
echo else
echo "Apestaste Cancelar" fi
#!/bin/bash
dialog --insecure --passwordbox "Ingrese su contraseña" 10 40 2>algo.txt;\
case $? in
0) echo "Apretaste aceptar" echo "Password: "
cat algo.txt echo ;;
1) echo "Apretaste cancelar";; esac
#!/bin/bash
contra=$( dialog --stdout --insecure
--passwordbox "Ingrese su contraseña" 10 40 ) case $? in
0) echo "Apretaste aceptar" echo "Password: "
echo $contra echo ;;
1) echo "Apretaste cancelar";; esac
7. Menú:
Se utiliza para crear menús, en el cual el usuario puede seleccionar la opción que desee, se redirecciona a alguna archivo el cual contendrá el valor de la opción seleccionada.
SYNOPSIS
--menu <text> <height> <width> <menu height> <tag1> <item1>...
Forma 1 Forma 2
#!/bin/bash
dialog --menu "MENU" 10 30 3 1 red 2 green 3 blue 2>algo.txt;\
case $? in
0) echo "Escogistes la opcion de aceptar" var=$(cat algo.txt)
rm -f algo.txt case $var in
1) dialog --msgbox "Escogistes la opcion 1: RED" 5 35;;
2) dialog --msgbox "Escogistes la opcion 2: GREEN" 5 35;;
3) dialog --msgbox "Escogistes la opcion 3: BLUE" 5 35;;
esac ;;
1)
dialog --sleep 4 --infobox "Escogistes la opcion de cancelar" 8 45
dialog --pause "Saliento del Sistema" 10 30 5
;; esac
#!/bin/bash
var=$(dialog --stdout --menu "MENU" 10 30 3 1 red 2 green 3 blue)
case $? in
0) echo "Escogistes la opcion de aceptar" case $var in
1) dialog --msgbox "Escogistes la opcion 1: RED" 5 35;;
2) dialog --msgbox "Escogistes la opcion 2: GREEN" 5 35;;
3) dialog --msgbox "Escogistes la opcion 3: BLUE" 5 35;;
esac ;;
1)
dialog --sleep 4 --infobox "Escogistes la opcion de cancelar" 8 45
dialog --pause "Saliento del Sistema" 10 30 5
;; esac
8. checklist:
Utilizado para que el usuario escoja varias opciones. SYNOPSIS
--checklist text height width list-height [ tag item status ] ...
Forma 1 Forma 2
#!/bin/bash
var=$( dialog --stdout --checklist "Elija su color preferido" 10 40 3 1 red on 2 green off 3 blue on 4 pink off )
dialog --msgbox "Valores Capturados: $var" 5 50
#!/bin/bash
var=$( dialog --stdout --separate-output --checklist "Elija su color preferido" 10 40 3 1 red on 2 green off 3 blue on 4 pink off )
echo "Valores Capturados: "$var
9.radiolist:
Utilizado para que el usuario escoja solamente una opción. SYNOPSIS
--radiolist <text> <height> <width> <list height> <tag1> <item1> <status1> Ejemplo1:
Ejemplo.
dialog --radiolist "Elija su color preferido" 10 40 4 1 red on 2 green off 3 blue off 4 pink off 2>algo.txt
Ejemplo2 #!/bin/bash
var=$(dialog --stdout --radiolist "Elija su equipo preferido" 10 40 4 1 Barcelona on 2 "Real Madrid" off 3 Villareal off 4 Cadiz off)
case $? in
0) dialog --sleep 4 --infobox "Mi equipo favorito es el de la ópcion: $var" 5 30 ./prueba.sh
;;
1) salir=$(dialog --stdout --yesno "Desea Cancelar" 5 35) case $? in
0) dialog --pause "Saliento del Sistema" 10 30 5 clear;; 1) ./prueba.sh;; esac ;; esac
Nota: Verificar el resultado con su docente, para observar si es el esperado.
10. fselect:
Utilizado para ver los directorios y archivos, capturando la dirección. SYNOPSIS
--fselect <filepath> <height> <width> Ejemplo
dialog --fselect /root/Desktop/ 5 6 2>algo.txt
11.gauge:
Sirve para crear una barra de progreso. SYNOPSIS
--gauge <text> <height> <width> [<percent>] Ejemplo
Forma1 Forma2 do
echo $I sleep 1 done
) | dialog --gauge "...:::Instalando:::..." 0 0 0
( while [ $x -le 100 ] do #comando de aplicacion echo $x x=$( expr $x + 10 ) sleep 1 done ) | dialog --gauge "...:::Instalando:::..." 0 0 0 V. DISCUSION DE RESULTADOS
->Crear un script que me permita ingresar un usuario, y luego que me permita ingresar su password, en cada opción utilizada para capturar usuario y password solo existirá el botón de aceptar, en ningún momento estará el botón de cancelar, ademas si existe el usuario y password, mostrara un mensaje que dirá el usuario si existe, en caso contrario me dirá que no existe, cada mensaje tendrá un tiempo determinado de 6 segundos.
->Crear un script que posea un menú con las siguientes opciones: -Listar archivos
-Ver directorio de trabajo -Crear directorio
-Crear usuario (verificar si es root)
Todo sera manipulado por medio de dialog, deberá escoger las cajas que considere necesarias para su fácil manipulación.
VII. BIBLIOGRAFIA