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:
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.
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.
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.
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.
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:
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!