Construeix pas a pas el teu programa usant Shell Scripting - Part 8

Un cop més benvinguts a aquesta nova lliçó (# 8) del Curs (Tutorial) sobre Shell Scripting ". En les anteriors 7 lliçons vam poder realitzar i / o aprendre sobre com crear certs mòduls (seccions) de codis amb funcionalitats especifiques mitjançant  Shell Scripting usant Bash shell com interpreti d'execució. Aquests mòduls fins ara són:

Shell Scripting

Per anar a la entrada anterior (lliçó 7) premeu el següent enllaç:

En aquesta vuitena (8) banda, ens concentrarem en la construcció de diversos mòduls, sent aquests els següents:

EL MÒDUL DE CONFIGURACIÓ 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ó d'aquest mòdul és indicar-li a el programa que la consola per aconseguir realitzar tasques que requereixin connectivitat a internet requereix un intermediari. si vostè no indica res (Tecla Enter sense col·locar cap IP) el programa assumirà que no requereix proxy, En cas contrari vostè ha de indicar-li una IP: PORT, Perquè el mateix configuri un servidor intermediari temporal de sortida i realitzar la connectivitat.

Selección_001

EL MÒDUL DE BENVINGUDA


# 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ó d'aquest mòdul és mostrar un Banner de Benvinguda a l'usuari dissenyat manualment amb caràcters alfanumèrics i no alfanumèrics. Després una finestra de missatge informatiu per terminal amb Diàleg i per últim una barra de progrés per controlar el següent pas a el proper mòdul.

Selección_002

Selección_003

Selección_004

EL MÒDUL DE SELECCIÓ DE INTERFACE D'USUARI


# 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ó d'aquest mòdul és crear una finestra de l'tipus menú que permeti escollir una opció amb l'ús tant de el teclat com el ratolí. Cada opció pot executar una ordre de comandament, un mòdul, una funció o un altre script. En aquest cas en particular, es ús per emmagatzemar un valor en una variable que després permetrà decidir una ordre segons el seu contingut.

Selección_005

Selección_006

Selección_007

EL MÒDUL DE SELECCIÓ I EXECUCIÓ DE MÒDULS ADDICIONALS


# 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ó d'aquest mòdul és executar una opció per omissió en funció d'un valor emmagatzemat prèviament en una variable. En aquest cas, aquesta variable dispararia una selecció entre continuar realitzant activitats només via consola amb comandaments i interfícies gràfiques amb dialog ó via interfícies gràfiques per a l'Entorn d'Escriptori amb Zenity i Gxmessage.

Selección_008

Selección_009

Selección_010

Selección_010

Selección_011

EL MÒDUL DE COMIAT


# 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ó d'aquest mòdul és mostrar un missatge per consola de comiat i esborrar l'arxiu d'execució reeixida de la mateixa.

A continuació un Screencast on es mostra com s'executa aquests mòdul i els anteriors perquè comproven com funcionen tots els mòduls mostrats durant les 8 lliçons anteriors, i certifiquin el poder de l' Shell Scripting ha un nivell superior:

Vídeo de Prova de l'Script

¿I perquè hem d'utilitzar interfícies d'usuari per consola o entorn gràfic als nostres Script?

Hem de recordar que les interfícies gràfiques d'usuari, També conegudes com GUI (Interfície gràfica d'usuari) són el mitjà utilitzat per a representar la informació i accions disponibles a la interfície inferior, utilitzant per a això un conjunt d'imatges i objectes gràfics. El seu principal ús, consisteix en proporcionar un entorn visual senzill per permetre la comunicació amb el sistema operatiu d'una màquina o ordinador.

Habitualment nosaltres realitzem les accions mitjançant la interacció directa amb els equip, és a dir, teclejant ordres o executant script amb el teclat. I les GUI sorgeixen com una evolució de les línia d'ordres dels primers sistemes operatius i convertint-se en la peça fonamental en un entorn gràfic.

I en un context de l' procés d'interacció persona-computador, La GUI és el mitjà tecnològic interactiu que ens possibilita, a través d'l'ús i la contextualització gràfica de l'llenguatge visual, una interacció amigable amb un sistema informàtic.

Utilitza interfícies gràfiques ens proporcionen avantatges i desavantatges, com ara:

Entre els avantatges: Facilitar el maneig dels procediments, Visualitzar cada comanda en pantalla mitjançant una imatge o objecte, Proporcionar els mecanismes estandarditzats de control com finestres i quadres de diàleg a l'usuari, Permetre la interacció a l'usuari amb el sistema d'una forma mes fàcil.

Entre els desavantatges: S'utilitza més recursos de sistema operatiu, la complexitat, el temps i el cost de desenvolupament de realitzar un desenvolupament d'aquest tipus.

Si vols saber més sobre com realitzar noves i més boniques interfícies en Terminal o en l'Escriptori et recomano aprendre sobre alguns comandaments que s'usen per construir finestres de diàleg amb capacitat de rebre o donar informació processable amb scripts en bash, com ara:

dialog: En el Manual de diàleg ens dóna les diferents opcions que té.

Gxmessage: En el Manual de Gxmessage ens dóna les diferents opcions que té.

Zenity: En el Manual de Zenity ens dóna les diferents opcions que té.

I si vols donar-li un toc encara més especial i interactiu als teus Script (Programes) ja siguin amb Bash shell o un altre Concha et recomano aquests altres programes que bé usats poden ajudar-te ha crear veritables meravelles sense ser molt destre en les arts de l'Shell Scripting. Entre aquests programes tenim a:

  • notify-send: Comando útil com a notificacions per a esdeveniments com ara avisar quan arriba un correu, es posa en línia un contacte i realitzar recordatoris de diverses tasques. 
  • tput: Comando que s'usa entre moltes coses per posicionar el cursor a la pantalla, esborrar dades de la pantalla, saber la quantitat de línies i columnes de la pantalla, posicionar correctament un camp, esborrar un camp l'entrada es va detectar com a error. En fi, gairebé tota la parametrització de la pantalla és feta per aquesta comanda. 
  • setleds: Comando que permet controlar les tecles d'activació i desactivació de les lletres majúscules / minúscules, el Teclat numèric i de desplaçament individualment per cada consola i escriptori.

Bé, fins aquí aquesta sèrie!


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.