Bouw uw programma stap voor stap met Shell Scripting - Deel 8

Nog een keer welkom naar deze nieuwe les (# 8) del Cursus (zelfstudie) op Shell Scripting ”. In bovenstaande 7 lessen We hebben kunnen maken en / of leren hoe we bepaalde modules (secties) van codes met specifieke functionaliteiten kunnen maken  Shell Scripting met behulp van Bash Shell als performancetolk. Deze modules zijn tot nu toe:

Shell-scripts

Om naar het Vorig bericht (les 7) druk op de volgende link:

In deze achtste (8) Anderzijds zullen we ons concentreren op de constructie van verschillende modules, namelijk de volgende:

DE PROXY CONFIGURATIEMODULE:


# 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

De functie van deze module is om aan het programma aan te geven dat de console een proxy vereist om taken uit te voeren die een internetverbinding vereisen. als jij geeft niets aan (Sleutel Enter zonder een IP in te voeren), zal het programma dat aannemen geen proxy vereist, anders moet u een IP: POORT, zodat het een tijdelijke uitgaande proxy kan configureren en connectiviteit kan uitvoeren.

Selección_001

DE WELKOMMODULE


# 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
             

De functie van deze module is om een Welkom banner voor de gebruiker handmatig ontworpen met alfanumerieke en niet-alfanumerieke tekens. Vervolgens een informatief berichtvenster per terminal met Dialoog en tot slot een voortgangsbalk om de volgende stap naar de volgende module te regelen.

Selección_002

Selección_003

Selección_004

DE GEBRUIKERSINTERFACE SELECTIEMODULE


# 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

De functie van deze module is om een ​​menu-achtig venster te creëren waarin u een optie kunt kiezen met behulp van zowel het toetsenbord als de muis. Elke optie kan voer een commando commando, een module, een functie of een ander script uit. In dit specifieke geval was het gewend sla een waarde op in een variabele wat dan zal toestaan beslis een bestelling op basis van de inhoud.

Selección_005

Selección_006

Selección_007

DE SELECTIE- EN UITVOERINGSMODULE VOOR AANVULLENDE MODULES


# 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
       

De functie van deze module is om een ​​vooraf gedefinieerde optie uit te voeren op basis van een waarde die eerder is opgeslagen in een variabele. In dit geval zou die variabele een selectie triggeren tussen alleen activiteiten blijven uitvoeren via console met commando's en grafische interfaces met dialoog ó via grafische interfaces voor de desktopomgeving met Zenity en Gxmessage.

Selección_008

Selección_009

Selección_010

Selección_010

Selección_011

DE FAREWELL-MODULE


# 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               

De functie van deze module is om een ​​bericht te tonen door de afscheidsconsole en het succesvolle uitvoeringsbestand daarvan te verwijderen.

Hieronder een screencast waar wordt getoond hoe deze modules en de vorige worden uitgevoerd, zodat ze controleren hoe alle modules getoond tijdens de vorige 8 lessen werken, en de kracht van de Shell-scripts heeft een hoger niveau:

Scripttestvideo

En waarom zouden we consolegebruikersinterfaces of grafische omgevingen voor ons script gebruiken?

Dat moeten we onthouden grafische gebruikersinterfaces, ook gekend als GUI (grafische gebruikersinterface) zijn de medium dat wordt gebruikt om de informatie en acties weer te geven die beschikbaar zijn in de onderste interface, met behulp van een reeks afbeeldingen en grafische objecten. Het belangrijkste gebruik bestaat uit een eenvoudige visuele omgeving bieden om communicatie met het besturingssysteem van een machine of computer mogelijk te maken.

Meestal voeren we de acties uit door directe interactie met de apparatuur, dat wil zeggen door commando's te typen of een script uit te voeren met het toetsenbord. EN GUI's ontstaan ​​als een evolutie van de opdrachtregel van de eerste besturingssystemen en het fundamentele stuk in een grafische omgeving worden.

En in een context van interactie tussen mens en computeris de GUI het interactieve technologische medium dat ons, door het gebruik en de grafische contextualisering van beeldtaal, een vriendelijke interactie met een computersysteem mogelijk maakt.

Het gebruik van grafische interfaces levert ons voor- en nadelen op, zoals:

Enkele voordelen: Vergemakkelijk de afhandeling van procedures, Geef elke opdracht op het scherm weer via een afbeelding of object, Bied de gebruiker gestandaardiseerde controlemechanismen zoals vensters en dialoogvensters, Sta de gebruiker toe om op een gemakkelijkere manier met het systeem te communiceren.

Een van de nadelen: Het gebruikt meer systeembronnen, complexiteit, ontwikkelingstijd en kosten om een ​​dergelijke ontwikkeling uit te voeren.

Als je meer wilt weten over het maken van nieuwe en mooiere interfaces in Terminal of op het bureaublad, raad ik je aan om enkele commando's te leren die worden gebruikt om dialoogvensters te bouwen met de mogelijkheid om bruikbare informatie te ontvangen of te geven met bash-scripts, zoals:

dialoog: In de Dialoogvenster geeft ons de verschillende opties die u heeft.

Gxbericht: In de Gxmessage-handleiding geeft ons de verschillende opties die u heeft.

Zeniteit: In de Zenity-handleiding geeft ons de verschillende opties die u heeft.

En als u een nog specialer en interactiever tintje aan uw Script (Programma's) wilt geven, ook met Bash Shell of een ander Shell Ik raad deze andere programma's aan die, als ze goed worden gebruikt, je kunnen helpen echte wonderen te creëren zonder erg bedreven te zijn in de Shell Scripting-kwesties. Onder deze programma's hebben we:

  • bericht verzenden: Zeer handig commando om notificaties te maken voor gebeurtenissen zoals een melding wanneer er een e-mail binnenkomt, een contactpersoon online wordt gezet en herinneringen aan verschillende taken. 
  • leggen: Commando dat onder meer wordt gebruikt om de cursor op het scherm te plaatsen, gegevens van het scherm te wissen, het aantal regels en kolommen op het scherm te kennen, een veld correct te positioneren, een veld te wissen waarvan de invoer als een fout is gedetecteerd. Hoe dan ook, bijna alle parametrisering van het scherm wordt gedaan door deze opdracht. 
  • nederzettingen: Commando waarmee u de activering en deactiveringstoetsen van de hoofdletters / kleine letters, het numerieke toetsenbord en het scrollende toetsenbord afzonderlijk kunt bedienen voor elke console en elk bureaublad.

Nou, tot nu toe deze serie!


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.