Crear menús y diálogos con scripts bash – 6/8 (dialog, dialogos de entrada y password)

Continuamos con el curso de box de dialogo, en este capitulo veremos la introdución de datos de texto así como de un password.

Que vemos en este script sh?.

  • Un cuadro menu de entrada: Útil cuando quieres realizar preguntas que requieren que el usuario introduzca un dato, por ejemplo una respuesta desde el teclado.
  • Puedes corregir con la tecla de retroceso, la de suprimir y las del cursor para corregir errores de escritura.
  • Si el dato de entrada es más largo que el box se encajara automáticamente en el cuadro de diálogo.
  • La cadena de entrada se imprimirá en la salida del diálogo. Se puede ser redirigir a un archivo de texto .

 

Ejemplo:

#!/bin/bash
# hola.sh - Inputbox shell script
OUTPUT="/tmp/input.txt"

# create empty file
>$OUTPUT

# Purpose - say hello to user 
#  $1 -> name (set default to 'anonymous person')
function sayhello(){
	local n=${@-"anonymous person"}
	#display it
	dialog --title "Hola" --clear --msgbox "Hola ${n}, bienvenido!" 10 41
}

# cleanup  - add a trap that will remove $OUTPUT
# if any of the signals - SIGHUP SIGINT SIGTERM it received.
trap "rm $OUTPUT; exit" SIGHUP SIGINT SIGTERM

# show an inputbox
dialog --title "Inputbox - To take input from you" \
--backtitle "Linux script ejemplo - sololinux.es" \
--inputbox "Enter your name " 8 60 2>$OUTPUT

# get respose
respose=$?

# get data stored in $OUPUT using input redirection
name=$(<$OUTPUT)

# make a decsion 
case $respose in
  0) 
  	sayhello ${name} 
  	;;
  1) 
  	echo "Cancel pressed." 
  	;;
  255) 
   echo "[ESC] key pressed."
esac

# remove $OUTPUT file
rm $OUTPUT

 

Ejemplos de salidas impresas:


Crear menús y diálogos con scripts bash - 6/8 (dialog, dialogos de entrada y password) 1

Crear menús y diálogos con scripts bash - 6/8 (dialog, dialogos de entrada y password) 2

Todo correcto, continuamos con el password.

 

Ejemplo de introducción de un password:

#!/bin/bash
# mipass.sh Sample Script to read users password.
# password storage
data=$(tempfile 2>/dev/null)

# trap it
trap "rm -f $data" 0 1 2 5 15

# get password
dialog --title "Password" \
--clear \
--passwordbox "Introduzca su password" 10 30 2> $data

ret=$?

# make decision
case $ret in
  0)
    echo "Password is $(cat $data)";;
  1)
    echo "Cancelar.";;
  255)
    [ -s $data ] &&  cat $data || echo "ESC pressed.";;
esac
Save and close the file. Run it as follows:

chmod +x mipass.sh
./mipass.sh

Guardar, conceder permisos y ejecutar, como:
chmod +x mipass.sh

Ejecutar:
./mipass.sh

### O bien...

bash mipass.sh

Recuerda que esta opción es para contraseñas seguras, si deseas no tener ningún problema pero con pass menos segura sera de la siguiente forma…

 

Password no segura (recomendable).

  • La opción –insecure hace widget de contraseña es más amigable pero menos segura.
  • Crearemos un script shell llamado mipass.sh.

#!/bin/bash
# mipass2.sh - Sample script to users password.
# password storage
data=$(tempfile 2>/dev/null)

# trap it
trap "rm -f $data" 0 1 2 5 15

# get password with the --insecure option
dialog --title "Password" \
--clear \
--insecure \
--passwordbox "Enter your password" 10 30 2> $data

ret=$?

# make decison
case $ret in
  0)
    echo "Password is $(cat $data)";;
  1)
    echo "Cancel pressed.";;
  255)
    [ -s $data ] &&  cat $data || echo "ESC pressed.";;
esac

Ejemplo de salida:

Crear menús y diálogos con scripts bash - 6/8 (dialog, dialogos de entrada y password) 3

 

Continuaremos en próximo articulo.

Una respuesta

  1. Héctor
    20/06/2020

Agregar comentario