Construa seu programa passo a passo usando Shell Scripting - Parte 8

Mais uma vez bem-vindo para este novo lição (# 8) do Curso (tutorial) em Shell Scripting ”. No acima 7 aulas Conseguimos fazer e / ou aprender como criar certos módulos (seções) de códigos com funcionalidades específicas através de  Script de Shell usando Bash Shell como intérprete de desempenho. Esses módulos até agora são:

Shell Scripting

Para ir ao postagem anterior (lição 7) pressione o seguinte link:

Neste oitavo (8) Por outro lado, nos concentraremos na construção de vários módulos, sendo estes:

O MÓDULO DE CONFIGURAÇÃO DO 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

A função deste módulo é indicar ao programa que o console para realizar tarefas que requerem conectividade com a Internet requer um proxy. Se você não indica nada (Chave Entrar sem colocar nenhum IP), o programa irá assumir que nenhum proxy requerido, caso contrário, você deve indicar um IP: PORTA, para que ele configure um proxy de saída temporário e execute a conectividade.

Selection_001

O MÓDULO DE BEM-VINDO


# 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
             

A função deste módulo é mostrar um Banner de boas-vindas para o usuário projetado manualmente com caracteres alfanuméricos e não alfanuméricos. Em seguida, uma janela de mensagem informativa por terminal com diálogo e, finalmente, uma barra de progresso para controlar a próxima etapa para o próximo módulo.

Selection_002

Selection_003

Selection_004

O MÓDULO DE SELEÇÃO DE INTERFACE DO USUÁRIO


# 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

A função deste módulo é criar uma janela do tipo menu que permite escolher uma opção com o uso do teclado e do mouse. Cada opção pode execute um comando de comando, um módulo, uma função ou outro script. Neste caso particular, foi usado para armazene um valor em uma variável que então permitirá decidir um pedido de acordo com seu conteúdo.

Selection_005

Selection_006

Selection_007

O MÓDULO PARA A SELEÇÃO E EXECUÇÃO DE MÓDULOS ADICIONAIS


# 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
       

A função deste módulo é executar uma opção predefinida com base em um valor previamente armazenado em uma variável. Neste caso, essa variável acionaria uma seleção entre continuar a realizar atividades apenas via console com comandos e interfaces gráficas com diálogo ó via interfaces gráficas para o Ambiente de Trabalho com Zenity e Gxmessage.

Selection_008

Selection_009

Selection_010

Selection_010

Selection_011

O MÓDULO 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               

A função deste módulo é mostrar uma mensagem pelo console de despedida e deletar o arquivo de sua execução com sucesso.

Abaixo de screencast onde é mostrado como estes módulos e os anteriores são executados para que verifiquem o funcionamento de todos os módulos mostrados nas 8 lições anteriores e certifiquem a potência do Shell Scripting tem um nível superior:

Vídeo de teste de script

E por que devemos usar interfaces de usuário de console ou ambiente gráfico para nosso Script?

Devemos lembrar que interfaces gráficas do usuário, também conhecido como GUI (interface gráfica do usuário) são meio utilizado para representar as informações e ações disponíveis na interface inferior, utilizando um conjunto de imagens e objetos gráficos. Seu principal uso consiste em fornecer um ambiente visual simples para permitir a comunicação com o sistema operacional de uma máquina ou computador.

Normalmente realizamos as ações por meio da interação direta com o equipamento, ou seja, digitando comandos ou executando um script com o teclado. E GUIs surgem como uma evolução da linha de comando dos primeiros sistemas operacionais e se tornando a peça fundamental em um ambiente gráfico.

E em um contexto de processo de interação humano-computador, a GUI é o meio tecnológico interativo que nos permite, através do uso e contextualização gráfica da linguagem visual, uma interação amigável com um sistema computacional.

O uso de interfaces gráficas nos oferece vantagens e desvantagens, como:

Entre as vantagens: Facilita o manuseio de procedimentos, Mostra cada comando na tela por meio de uma imagem ou objeto, Fornece mecanismos de controle padronizados como janelas e caixas de diálogo para o usuário, Permite que o usuário interaja com o sistema de forma mais fácil.

Entre as desvantagens: É preciso mais recursos do sistema operacional, complexidade, tempo de desenvolvimento e custo para fazer tal desenvolvimento.

Se você quiser saber mais sobre como fazer interfaces novas e mais bonitas no Terminal ou na área de trabalho, recomendo que você aprenda sobre alguns comandos que são usados ​​para construir janelas de diálogo com a capacidade de receber ou fornecer informações acionáveis ​​com scripts bash, como:

diálogo: No Manual de Diálogo nos dá as diferentes opções que você tem.

gxmensagem: No Manual Gxmessage nos dá as diferentes opções que você tem.

Zenty: No Manual Zenity nos dá as diferentes opções que você tem.

E se você quiser dar um toque ainda mais especial e interativo ao seu Script (Programas) com Bash shell ou outro concha Eu recomendo esses outros programas que, quando bem usados, podem ajudá-lo a criar verdadeiras maravilhas sem ser muito hábil nas questões de Shell Scripting. Entre esses programas, temos:

  • notificar-enviar: Comando muito útil para fazer notificações de eventos como avisar quando chega um email, colocar um contacto online e fazer lembretes de várias tarefas. 
  • colocar: Comando utilizado entre muitas coisas para posicionar o cursor na tela, deletar dados da tela, saber o número de linhas e colunas da tela, posicionar corretamente um campo, deletar um campo cuja entrada foi detectada como um erro. De qualquer forma, quase toda a parametrização da tela é feita por este comando. 
  • assenta: Comando que permite controlar as teclas de ativação e desativação das letras maiúsculas / minúsculas, o teclado numérico e o teclado de rolagem individualmente para cada console e desktop.

Bem, até agora esta série!


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.