Construye paso a paso tu programa usando Shell Scripting – Parte 8

Una vez más bienvenidos a esta nueva lección (# 8) del Curso (Tutorial) sobre Shell Scripting”. En las anteriores 7 lecciones pudimos realizar y/o aprender sobre como crear ciertos módulos (secciones) de códigos con funcionalidades especificas mediante  Shell Scripting usando Bash Shell como interprete de ejecución. Estos módulos hasta ahora son:

Shell Scripting

Para ir a la entrada anterior (lección 7) presione el siguiente enlace:

En esta octava (8) parte, nos concentraremos en la construcción de varios módulos, siendo estos los siguientes:

EL MODULO DE CONFIGURACIÓN DE PROXY:


# MODULO DE CONFIGURACIÓN DE PROXY


read -p "En caso de requerir configurar un Proxy en su Terminal, introduzca la dirección_ip:puerto necesaria, en caso contrario solo presione la tecla ENTER: " IP_PTO_PROXY

# Nota: Indicar dirección_ip: puerto solo en caso de ser necesario activar debido
# a proxy interno no transparente para la terminal dentro de la red de trabajo
# donde se ejecute.

echo -e '\a'
export http_proxy=$IP_PTO_PROXY
#export no_proxy="127.0.0.1, localhost, 192.168.0.0/22, mi_institucion.gob.ve:8080"

sleep 3
clear

read -p "SI DESEA CANCELAR PRESIONE CUALQUIERA DE LOS SIGUIENTES CARACTERES: "s" "S" "y" "Y". DE LO CONTRARIO PRESIONE CUALQUIER OTRA TECLA! : " op

if [[ $op == "y" || $op == "Y" || $op == "s" || $op == "S" ]];

 then

   sleep 3 ; clear ; exit 0

 else

   sleep 3 ; clear ; read -p "EL PROGRAMA CONTINUARA, OPRIMA CUALQUIER TECLA PARA CONTINUAR..." && sleep 3 ; clear

fi

La función de este modulo es indicarle al programa que la consola para lograr realizar tareas que requieran conectividad a internet requiere un proxy. Si usted no indica nada (Tecla Enter sin colocar ninguna IP) el programa asumirá que no requiere proxy, en caso contrario usted debe indicarle una IP:PUERTO, para que el mismo configure un proxy temporal de salida y realizar la conectividad.

Selección_001

EL MODULO DE BIENVENIDA


# MODULO DE BIENVENIDA               

play /usr/share/sounds/startup3.wav 2> /dev/null

echo " BIENVENIDOS AL PROGRAMA "
sleep 3
clear

dialog --infobox "\n \n \nGRACIAS POR USAR ESTE SCRIPT..." 10 80 ; sleep 3

DIALOG=${DIALOG=dialog}

COUNT=10
(
while test $COUNT != 110
do
echo $COUNT
echo "XXX"
echo "ESTIMADO USUARIO, BIENVENIDO AL SCRIPT..."
echo "GRACIAS POR UTILIZARME..."
echo "ESPERE UNOS SEGUNDOS MIENTRAS ME INICIALIZO... ($COUNT %)"
echo "XXX"
COUNT=`expr $COUNT + 10`
sleep 1
done
) |
$DIALOG --title "LPI - SB" --gauge "INICIALIZANDO EL SCRIPT" 10 80 0

clear

echo " SCRIPT DE TRABAJO EN EJECUCIÓN "
echo ""
sleep 3
clear
             

La función de este modulo es mostrar un Banner de Bienvenida al usuario diseñado manualmente con caracteres alfanuméricos y no alfanuméricos. Luego una ventana de mensaje informativo por terminal con dialog y por ultimo una barra de progreso para controlar el siguiente paso al próximo módulo.

Selección_002

Selección_003

Selección_004

EL MODULO DE SELECCIÓN DE INTERFACE DE USUARIO


# MODULO DE SELECCIÓN DE INTERFACE DE USUARIO 

DIALOG_CANCEL=1
DIALOG_ESC=255
HEIGHT=0
WIDTH=0

display_result() {
  dialog --title "$1" \
    --no-collapse \
    --msgbox "$result" 0 0
}

while true; do
  exec 3>&1
  selection=$(dialog \
    --backtitle "Script en ejecución" \
    --title "Menu" \
    --clear \
    --cancel-label "Exit" \
    --menu "Seleccione una (1) opción, por favor:" $HEIGHT $WIDTH 4 \
    "1" "Usar interfaz de usuario (GUI) por Terminal" \
    "2" "Usar interfaz de usuario (GUI) por Escritorio" \
    "3" "Cerrar la sesión del Script" \
    2>&1 1>&3)
  exit_status=$?
  exec 3>&-
  case $exit_status in
    $DIALOG_CANCEL)
      clear
      echo "Sesión del Script cancelada."
      exit
      ;;
    $DIALOG_ESC)
      clear
      echo "Sesión del Script abortada." >&2
      exit 1
      ;;
  esac
  case $selection in
    0 )
      clear
      echo "Programa Terminado."
      ;;
    1 )
      result=$(echo "Usuario $USERNAME, usted ha seleccionado la interfaz de usuario (GUI) por Terminal"; echo $FECHA_SISTEMA_N / $HORA_SISTEMA)
      display_result "Script de Trabajo"
      USER_INTERFACE=T ; break
      
      ;;
    2 )
      result=$(echo "Usuario $USERNAME, usted ha seleccionado la interfaz de usuario (GUI) por escritorio"; echo $FECHA_SISTEMA_N / $HORA_SISTEMA)
      display_result "Script de Trabajo"
      USER_INTERFACE=E ; break
      ;;
    3 )
      result=$(echo "Usuario $USERNAME, el SCRIPT ha seleccionado la interfaz de usuario (GUI) por Terminal por defecto"; echo $FECHA_SISTEMA_N / $HORA_SISTEMA)
      display_result "Script de trabajo"
      USER_INTERFACE=T ; break
      ;;
  esac
done

La función de este modulo es crear una ventana del tipo menú que permita escoger una opción con el uso tanto del teclado como el mouse. Cada opción puede ejecutar una orden de comando, un modulo, una función u otro script. En este caso en particular, se uso para almacenar un valor en una variable que luego permitirá decidir una orden según su contenido.

Selección_005

Selección_006

Selección_007

EL MODULO DE SELECCIÓN Y EJECUCIÓN DE MÓDULOS ADICIONALES


# MODULO DE SELECCIÓN Y EJECUCIÓN DE MÓDULOS ADICIONALES               


if [[ "$USER_INTERFACE" == "T" ]]; then

    bash $UBICACION/lpi_sb8_gui_terminal.sh 
    sleep 3

  else

    bash $UBICACION/lpi_sb8_acond_audiovisual_g_2016.sh

    bash $UBICACION/lpi_sb8_act_mtto_g_2016.sh

fi
       

La función de este modulo es ejecutar una opción predefinida en función de un valor almacenado previamente en una variable. En este caso, esa variable dispararía una selección entre continuar realizando actividades solo vía consola con comandos e interfaces gráficas con dialog ó vía interfaces gráficas para el Entorno de Escritorio con Zenity y Gxmessage.

Selección_008

Selección_009

Selección_010

Selección_010

Selección_011

EL MODULO DE DESPEDIDA


# MODULO DE DESPEDIDA               

# Sección que muestra un mensaje de despedida al usuario

echo -e '\a'

echo ''
echo ''
echo '#--------------------------------------------------------#'
echo '#   ESPERE UNOS SEGUNDOS MIENTRAS SE CIERRAN TODOS LOS   #'
echo '#               PROCESOS ABIERTOS DEL SCRIPT             #'
echo '#--------------------------------------------------------#'
echo ''
echo ''

sleep 5
clear

# Sección que instala los paquetes bases del Script

echo -e '\a'

echo ''
echo ''
echo '#--------------------------------------------------------#'
echo '#           MUCHAS GRACIAS POR USAR EL SCRIPT            #'
echo '#                                                        #'
echo '#  EL PROGRAMA HA CULMINADO Y SE CERRARÁ INMEDIATAMENTE  #'
echo '#                    ESTIMADO USUARIO                    #'
echo '#--------------------------------------------------------#'
echo ''
echo ''

sleep 3
clear

wget -o /dev/null --user-agent="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36" -O "/tmp/audio.mp3" "https://translate.google.co.ve/translate_tts?ie=UTF-8&q=MUCHAS%20GRACIAS%20POR%20USAR%20EL%20LINUX%20POST%20INSTALL%20-%20SCRIPT%20BICENTENARIO%2C%20EL%20PROGRAMA%20HA%20FINALIZADO%20Y%20SE%20CERRAR%C3%81%20INMEDIATAMENTE%2C%20ESTIMADO%20USUARIO.&tl=es&total=1&idx=0&textlen=141&tk=899229.758054&client=t&prev=input" ; play -q /tmp/audio.mp3

play /usr/share/sounds/shutdown1.wav 2> /dev/null

rm -f $UBICACION/$FILE_LOCK

setterm --initialize

# MODULO DE DESPEDIDA               

La función de este modulo es mostrar un mensaje por consola de despedida y borrar el archivo de ejecución exitosa del mismo.

A continuación un Screencast donde se muestra como se ejecuta estos módulo y los anteriores para que comprueben como funcionan todos los módulos mostrados durante las 8 lecciones anteriores, y certifiquen el poder del Shell Scripting ha un nivel superior:

Vídeo de Prueba del Script

¿Y porque debemos utilizar interfaces de usuario por consola o entorno gráfico a nuestros Script?

Debemos recordar que las interfaces gráficas de usuario, también conocidas como GUI (Graphical User Interface) son el medio utilizado para representar la información y acciones disponibles en la interfaz inferior, utilizando para ello un conjunto de imágenes y objetos gráficos. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador.

Habitualmente nosotros realizamos las acciones mediante la interacción directa con los equipo, es decir, tecleando comandos o ejecutando script con el teclado. Y las GUI surgen como una evolución de las línea de comandos de los primeros sistemas operativos y convirtiéndose en la pieza fundamental en un entorno gráfico.

Y en un contexto del proceso de interacción persona-computador, la GUI es el medio tecnológico interactivo que nos posibilita, a través del uso y la contextualización gráfica del lenguaje visual, una interacción amigable con un sistema informático.

Usar interfaces gráficas nos proporcionan ventajas y desventajas, tales como:

Entre las ventajas: Facilitar el manejo de los procedimientos, Visualizar cada comando en pantalla mediante una imagen u objeto, Proporcionar los mecanismos estandarizados de control como ventanas y cuadros de dialogo al usuario, Permitir la interacción al usuario con el sistema de una forma mas fácil.

Entre las desventajas: Se utiliza más recursos del sistema operativo, la complejidad, el tiempo y el costo de desarrollo de realizar un desarrollo de ese tipo.

Si deseas saber más sobre como realizar nuevas y más bonitas interfaces en Terminal o en el Escritorio te recomiendo aprender sobre algunos comandos que se usan para construir ventanas de diálogo con capacidad de recibir o dar información procesable con scripts en bash, tales como:

Dialog: En el Manual de Dialog nos da las diferentes opciones que tiene.

Gxmessage: En el Manual de Gxmessage nos da las diferentes opciones que tiene.

Zenity: En el Manual de Zenity nos da las diferentes opciones que tiene.

Y si deseas darle un toque aún mas especial e interactivo a tus Script (Programas) ya sean con Bash Shell u otro Shell te recomiendo estos otros programas que bien usados pueden ayudarte ha crear verdaderas maravillas sin ser muy diestro en las lides del Shell Scripting. Entre estos programas tenemos a:

  • notify-send: Comando muy útil para realizar notificaciones para eventos tales como avisar cuando  llega un correo, se pone en linea un contacto y realizar recordatorios de varias tareas. 
  • tput: Comando que se usa entre muchas cosas para posicionar el cursor en la pantalla, borrar datos de la pantalla, saber la cantidad de líneas y columnas de la pantalla, posicionar correctamente un campo, borrar un campo cuya entrada se detectó como error. En fin, casi toda la parametrización de la pantalla es hecha por este comando. 
  • setleds: Comando que permite controlar las teclas de activación y desactivación de las letras Mayúsculas / Minúsculas, el Teclado numérico y de desplazamiento individualmente por cada consola y escritorio.

Bueno, hasta aquí esta serie!


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.