Volver al índice


dialog

Muestra cuadros de diálogo para scripts

$ dialog --calendar "mes de junio" 0 0 1 6 2010 ("0 0" indica que se autodimensiona el cuadro. El tamaño estándar de una terminal es un ancho de 80 por un largo de 25. "1 6 2010" fecha con formato dia/mes/año)

$ dialog --checklist "Escoger servicios" 0 0 3 vnc "" "" ssh "" "" cups "" "" ("3" numero de entradas visibles, si hay más se usará el scroll. Las "" indican parámetros vacios que puedan sustituirse por palabras o números, el primero de los cuales aparecerá en el cuadro de diálogo [vnc 1 A ssh 2 B cups 3 C])

$ dialog --dselect /home/usuario/ 0 0 (mostrará el contenido del directorio mencionado)

$ dialog --editbox /etc/fstab 0 0 (mostrará el contenido del fichero seleccionado)

$ dialog --fselect /home/usuario/ 0 0 (Mostrará dos ventanas una con los directorios y la otra con los ficheros)

$ dialog --gauge "Uso del software libre" 0 0 0 (Muestra el progreso de un proceso)

$ for var in 0 10 20 30 40 50 60 70 80 90 100; do sleep 1; echo $var; done | dialog --gauge "Total completado" 6 60 0 (concatenación de dialogs)

$ dialog --infobox "Esto va a explotar...." 3 26 (Un cuadro con un texto)

$ dialog --sleep 3 --infobox "Esto va a explotar...." 3 26 (Vuelve al prompt a los 3 segundos)

$ dialog --sleep 3 --title "AVISO" --infobox "Esto va a explotar en 3 segundos...." 3 40; dialog --infobox "BOOOOOOOMMMM" 0 0 (Concatenación de dialogs)

$ dialog --inputbox "Ingrese su nombre" 0 0 (Solicitar una linea de texto al usuario)

$ dialog --passwordbox "Ingrese contraseña" 0 0 (Igual que inputbox pero no se muestra nada de lo que se ingresa en pantalla)

$ dialog --title "Aquí me las den" --no-cancel --inputbox "Dejame un mensaje cariño" 0 0 "" (Especificando un título, sin el botón de "cancelar" y con cajón para dejar un mensaje)

$ dialog --inputmenu "Nombre del usuario" 0 0 3 " juan Perez" "c/ del Pulgar num 5" "Jose Gonzalez" "c/ pez num 11" (Permite modificar el segundo concepto [La calle])

$ dialog --menu "Escoge una distro..." 0 0 3 1 "Arch" 2 "Red Had" 3 "Ubuntu" 4 "Debian"

$ dialog --mixedgauge "errores" 0 0 30 ubuntu distros

$ dialog --msgbox "Aquí puedes poner un texto" 0 0 (Avisar de una acción o comunicación y separando el texto de la parte superior [])

$ dialog --timeout 10 --clear --passwordbox "Entra la contraseña" 0 0 "" (Especificando un tiempo para entrarla y limpiando la pantalla)

$ dialog --backtitle "Sobre timeout..." --timeout 5 --pause "Espera un rato..." 10 10 5 (Esperar 5 segundos antes de volver al prompt y con el título en la parte superior de la ventana [--backtitle])

$ dialog --radiolist "Escoger servicios" 0 0 3 vnc "" "" ssh "" "" cups "" "" (parecido a checklist)

$ dialog --no-shadow --tailbox /etc/fstab 0 0 (Mostrar últimas lineas de un archivo sin sombreado de la ventana)

$ dialog --timebox "Tiempo de espera" 0 0 22 55 33

$ dialog --extra-button --timebox "Tiempo de espera" 0 0 22 55 33 (Incluir un boton extra)

$ dialog --defaultno --timebox "Tiempo de espera" 0 0 22 55 33 (Seleccionando por defecto "cancelar")

$ dialog --yesno "Quieres pasar a la siguiente opción?" 0 0 (Retornara un valor cero, si se selecciona YES o distinto de cero si se selecciona NO. Este valor se almacena en la variable $? y puede ser evaluado mediante un if, while,...)

$ dialog --tailbox /var/log/fail2ban.log 20 100 (muestra en tiempo real las incidencias en el fichero mencionado. Equivalente a tail -f)

Algunos ejemplos prácticos de su uso en scripts:

1.-

#!/bin/bash

dialog --menu "Opciones del script" 16 60 14 1 "Puertos abiertos" 2 "Intentos de acceso" 3 "las IPs externas e internas" 4 "Cantidad de intentos de ataques" 5 "Servicios activos" 6 "Salir"

clear

2.-

#!/bin/bash

# Escanear puertos abiertos

nmapResultat=$(sudo nmap -O localhost | grep "open" | awk '{print$1,$3}')

dialog --title "Resultado del escaneo de puertos" --msgbox "Los puertos abiertos son:

$nmapResultat" 0 0

clear

3.-

#!/bin/bash

# Parar un servicio

dialog --title "samba" --yesno "Quieres detener samba?" 0 0

case $? in

sudo /etc/init.d/samba stop

dialog --title "Info" --msgbox "samba detenido" 0 0;;

dialog --title "Info" --msgbox "samba continua activo" 0 0 ;;

dialog --title "Info" --msgbox "ESC presionado... samba activo" 0 0 ;;

esac

clear

$ dialog --title "Mensaje al mundo" --msgbox "Hola a todos" 6 35

$ dialog --yesno "¿Estás de acuerdo?" tput lines tput cols

$ dialog --menu "Escoger interfaz" 0 0 0 g "gnome" k "kde" x "xfce" 2>&1

4.-

#!/bin/bash

# Respuestas como variables

TMPFILE="/tmp/scripttemp.$$"

dialog --inputbox "Ingrese su nombre" 10 30 2> $TMPFILE

N=cat $TMPFILE

dialog --inputbox "Ingrese su edad" 10 30 2> $TMPFILE

E=cat $TMPFILE

# Borrar tmpfile

rm -f $TMPFILE

dialog --infobox "$N tiene $E años" 3 50


Volver al índice