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

En entradas previas de esta serie de publicaciones recordamos sobre como implementar un:

Y en otras anteriores, como implementar un Shebang y un BSM (Bash Strict Mode / Modo Bash Estricto).

Mejores practicas para crear un Script de Shell en GNU/Linux – Parte 1

Mejores practicas para crear un Script de Shell en GNU/Linux – Parte 2

A continuación un ejemplo de un Modulo de optimización, tomando como ejemplo uno de mis programas (aplicaciones) hechos en un Script de Shell llamado Linux Post Install – Script Bicentenario 8.0:

Este debería ser el modulo (sección) que instale los paquetes bases necesarios para el buen funcionamiento del mismo, o ejecute las acciones mínimas necesarias de actualización, mantenimiento o performance del Entorno de Trabajo o Sistema Operativo para que a continuación todo se ejecute satisfactoriamente. Yo personalmente agrego las siguientes lineas para crear dicho módulo:


###############################################################################
# INICIO DEL MODULO DE OPTIMIZACIÓN AL LINUX POST INSTALL - SCRIPT BICENTENARIO               
###############################################################################

# Sección que instala los paquetes bases del LPI-SB

echo -e '\a'

apt update && apt install dialog gxmessage zenity espeak gksu -y && apt install -f && dpkg --configure -a

if [ $? = 0 ]; then

     echo ""
     echo ""
     echo "#--------------------------------------------------------#"
     echo "#LA INSTALACIÓN DE LOS PAQUETES HA CULMINADO EXITOSAMENTE#"
     echo "#--------------------------------------------------------#"
     echo ""
     echo ""

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

     sleep 3
     clear

else

     echo ''
     echo ''
     echo '#--------------------------------------------------------#'
     echo '# LA INSTALACIÓN DE LOS PAQUETES NO CULMINO EXITOSAMENTE #'
     echo '#--------------------------------------------------------#'
     echo ''
     echo ''

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

     sleep 3
     clear

     echo ''
     echo ''
     echo '#--------------------------------------------------------#'
     echo '#                  EJECUTE MANUALMENTE                   #'
     echo '# UN MANTENIMIENTO PREVENTIVO Y CORRECTIVO EN SU SISTEMA #'
     echo '#   EJECUTANDO LA SIGUIENTES ORDEN DE COMANDO, 1 HA 1:   #'
     echo '#                                                        #'
     echo '#                       apt update                       #'
     echo '#                     apt install -f                     #'
     echo '#                   dpkg --configure -a                  #'
     echo '#                       apt upgrade                      #'
     echo '#                                                        #'
     echo '#   LUEGO INSTALE MANUALMENTE LOS PAQUETES NECESARIOS    #'
     echo '#         CON LA ORDEN DE COMANDO SIGUIENTE:             #'
     echo '#                                                        #'
     echo '#      apt install dialog gxmessage zenity espeak -y     #'
     echo '#                                                        #'
     echo '#  AHORA, VUELVA HA INTENTAR EJECUTAR EL SCRIPT LPI-SB   #'
     echo '#--------------------------------------------------------#'
     echo ''
     echo ''

     sleep 3
     clear

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

     exit 0

fi

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=BIENVENIDO%20AL%20LINUX%20POST%20INSTALL%20-%20SCRIPT%20BICENTENARIO&tl=es&total=1&idx=0&textlen=54&tk=511133.124198&client=t&prev=input&ttsspeed=0.24" ; play -q /tmp/audio.mp3

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=ESTIMADO%20USUARIO%2C%20ESPERE%20UNOS%20SEGUNDOS%20MIENTRAS%20EL%20PROGRAMA%20SE%20CARGA%20E%20INICIA&tl=es&total=1&idx=0&textlen=77&tk=337132.200023&client=t&prev=input" ; play -q /tmp/audio.mp3

###############################################################################
# FINAL DEL MODULO DE OPTIMIZACIÓN AL LINUX POST INSTALL - SCRIPT BICENTENARIO               
###############################################################################

===============

Como pueden apreciar este módulo ejecuta un aptitude update, seguido de la instalación de los paquetes dialog gxmessage zenity espeak gksu, continuando con las ordenes de comando aptitude install -f y dpkg –configure -a. Y en caso de que si y solo si todo se haya ejecutado satisfactoriamente, se ejecute un mensaje visual por terminal de realización exitosa con una alerta sonica y continué con el siguiente paso (modulo / sección) del Script de Shell. En caso contrario, se ejecute un mensaje visual por terminal de realización no exitosa con una alerta sonica, con otro mensaje visual por terminal recomendando acciones manuales a ejecutar para evitar nuevamente el error conseguido, para luego finalizar la ejecución del Script de Shell.

Con respecto a las 2 últimas líneas del módulo, las que empiezan con el comando wget, por ahora estas no son esenciales, ya que estas son parte de un procedimiento experimental adaptado por mí para lograr el soporte de voz de un Script de Shell con conexión a internet utilizando el Sintetizador de voz en línea de Google Traductor y su sensual voz femenina, y así sustituir el sintetizador con voz robótica (masculina / femenina) proveída localmente por los Sistemas Operativos GNU/Linux con los paquetes (programas) espeak, festival, festvox, mbrola, speech y stardict.

Recomendación:

LEER EL DOCUMENTO: “LA CATEDRAL Y EL BAZAR”

La Catedral y el Bazar es una especie de manifiesto creado por Eric S. Raymond en el año 1.998 para intentar explicar desde su punto de vista y experiencia personal (Creación del programa Fetchmail) lo que el percibía sobre la exitosa creación y evolución de Linux y sus programas conexos, sobre todo desde la perspectiva de la diferencia entre los Modelos de Desarrollo de Software, que el personalmente llamo: Modelo Catedral y Modelo Bazar.

Mi análisis resumido de dicha documento es el siguiente:

Esta lectura nos sugiere o presenta la visión de que dentro del mundo de la Ingeniería del Software hay “dos estilos de desarrollo completamente distintos, el modelo catedral, aplicable a la mayor parte de los desarrollos realizados en el mundo del Software comercial, frente al modelo bazar, más propio del mundo Linux”. Haciendo el resalte de que dichos 2 modelos se derivan de puntos de partida opuestos sobre la naturaleza del proceso de depuración del software, y de su particular teoría sobre lo que el llamaba La ley de Linus que enunciaba lo siguiente: “Dado un número suficiente de ojos, todos los errores son irrelevantes” o en otras palabras: “Con un número de ojos suficiente, todos los errores son naderías”.

También en esta lectura el autor hace énfasis en la palabra Hacker, que a mi entender el autor expresaba como una suerte de Usuario de Alto Nivel capaz de entender y explotar eficientemente un programa, y de detectar, sugerir o implementar correcciones o modificaciones de forma y fondo eficientes para toda la comunidad de usuarios. Este concepto auto-sugerido me gusto mucho ya que pienso que es acertado, sin embargo, dejaré uno que también me gusta mucho por ser mucho mas global y / o genérico.

“Linux es subversivo”. Por que? Lo primero que nos dice esta lectura es que:

Hasta ese momento había una enorme diversidad de métodos o modelos de Desarrollo de Software estandarizados que se apoyaban en un “enfoque  más centralizado y planificado desde el principio” a consecuencia de que se tomaba el acto de diseñar Software como algo relacionado ha un factor X que conlleva a “cierta complejidad critica”. Y que a pesar de que esto ya existía en el Mundo Unix, es decir, trabajo consistente en herramientas pequeñas, rápido desarrollo de prototipos y programación evolutiva, la aparición de la filosofía de desarrollo de Software Libre bajo Linux llevo el asunto a otro nivel de sofisticación.

A consecuencia de esto, Mientras el Desarrollo del Software Privativo se hacia de “forma silenciosa y reverente”, tal como se construye una Catedral, el Desarrollo del Software Libre (Linux) se hacia de “forma bulliciosa y con múltiples agendas (caminos) y enfoques (propuestas)”, tal como se se estuviera en un gran Bazar.

Por último, expone una serie de premisas dignas de desmenuzar y digerir en su justo contexto para entender a aquellos que desarrollan para la Comunidad de usuarios del Software Libre. Estas premisas son:

  1. TODOS LOS TRABAJOS BUENOS EN SOFTWARE COMIENZAN TRATANDO DE PALIAR UN PROBLEMA PERSONAL DEL QUE LOS PROGRAMA .
  2. LOS BUENOS PROGRAMADORES SABEN QUÉ ESCRIBIR. LOS GRANDES SABEN QUÉ REESCRIBIR (Y REUTILIZAR).
  3. PIENSA EN DESECHAR AL MENOS UNO: LO TERMINARÁS HACIENDO DE TODOS MODOS.”
  4. SI TIENES LA ACTITUD ADECUADA, LOS PROBLEMAS INTERESANTES TE ENCONTRARÁN.
  5. CUANDO UN PROGRAMA DEJA DE INTERESARTE, TU ÚLTIMO DEBER ES PASARLO A UN SUCESOR COMPETENTE.
  6. TRATAR A TUS USUARIOS COMO COLABORADORES ES EL CAMINO MENOS COMPLICADO PARA MEJORAR CON RAPIDEZ Y DEPURAR EFICAZMENTE UN PROGRAMA.
  7. LÁNZALO PRONTO. LÁNZALO A MENUDO. Y ESCUCHA A TUS USUARIOS.
  8. DADA UNA BASE LO SUFICIENTEMENTE AMPLIA DE PROBADORES Y COLABORADORES, CASI TODOS LOS PROBLEMAS SE IDENTIFICARÁN CON RAPIDEZ Y SU SOLUCIÓN SERÁ OBVIA PARA ALGUIEN.

Más otras 11 restantes premisas que son más del tipo aleccionador (moraleja), lo cual no viene con la historia sino con lo interpretado por cada lector (desarrollador), que en mí caso muy particular, me llevo a las conclusiones siguientes:

Espero les haya gustado y les sea útil dicha información, ya que la Lectura de La Catedral y el Bazar es un referente obligado para todos aquellos que programamos cualquier Desarrollo en Software Libre, por muy grande o pequeño que sea.

Más adelante, en futuras entradas continuaremos viendo ejemplo de módulos (secciones) que realicen funciones tales como:

  • MODULO DE AUTORIZACIÓN DE USUARIO CON CONTRASEÑA
  • MODULO DE DETECCIÓN DE ARQUITECTURA DEL SISTEMA OPERATIVO
  • MODULO DE CONFIGURACIÓN DEL LENGUAJE DE CODIFICACIÓN
  • MODULO DE CONFIGURACIÓN DE PROXY PARA EL AMBIENTE DE EJECUCIÓN

Entre muchos otros!

Y como siempre, les recomiendo ir aprendiendo de forma autodidacta sobre los comandos: gksu, dialog, gxmessage, zenity, espeak, play, entre muchos otros más para crear interfaces gráficas por Terminal o para el Escritorio del Usuario, con alertas sonicas o multimedias, e ir adelantando conocimientos que usarán más adelante.

Recuerden que estas y cualquier otras recomendaciones sobre algún modulo, función, variable, comando u acción en general puede llevarse a cabo de muchas maneras, y lo aquí mostrado no es más que una sencilla manera, de las muchas maneras posibles y probables en la que dicha acción puede o podría ser llevada a cabo!

Solo para finalizar les dejo, un Screencast realizado por mí, para demostrarles de que serian capaces ustedes mismo, luego de finalizado este Curso online de Shell Scripting en DesdeLinux:

ScreenCast de Testeo del LPI-SB8

(LINUX POST INSTALL – SCRIPT BICENTENARIO 8.0.0) – Parte 2


Deja un 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.