使用Shell脚本逐步构建程序-第8部分

再来一次 欢迎 到这个新 课程(#8)课程(教程) Shell脚本”。 在上面 7课程 我们能够通过以下方式制作和/或了解如何创建具有特定功能的某些代码模块(部分)  使用Bash Shell的Shell脚本 作为表演翻译。 到目前为止,这些模块是:

Shell脚本

以前的帖子(第7课) 按以下链接:

在这 第八(8) 另一方面,我们将集中精力构建几个模块,这些模块如下:

代理配置模块:


# 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

该模块的功能是向程序指示,要执行需要Internet连接的任务的控制台需要代理。 如果你 什么也没表示 (键 输入 无需输入任何IP),程序将假定 无需代理,否则您必须指出一个 IP:端口,以便它配置临时出站代理并执行连接。

Selección_001

欢迎模块


# 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
             

该模块的功能是显示 欢迎横幅 给用户手动设计的字母数字和非字母数字字符。 然后每个终端的信息性消息窗口 对话框 最后是进度条,用于控制到下一个模块的下一步。

Selección_002

Selección_003

Selección_004

用户界面选择模块


# 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

该模块的功能是创建一个菜单类型的窗口,该窗口允许同时使用键盘和鼠标来选择一个选项。 每个选项都可以 执行命令,命令,模块,函数或其他脚本。 在这种情况下, 将值存储在变量中 这将允许 根据其内容确定订单。

Selección_005

Selección_006

Selección_007

选择和执行附加模块


# 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
       

该模块的功能是基于先前存储在变量中的值执行预定义的选项。 在这种情况下,该变量将触发在仅继续执行活动之间进行选择 通过带有命令的控制台和带有对话框的图形界面 ó 通过带有Zenity和Gxmessage的桌面环境的图形界面。

Selección_008

Selección_009

Selección_010

Selección_010

Selección_011

告别模块


# 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               

该模块的功能是通过告别控制台显示一条消息,并删除该消息的成功执行文件。

下一个 截屏 此处显示了这些模块和先前模块的执行方式,以便他们可以检查前8课中显示的所有模块的工作方式,并证明 Shell脚本 具有较高的水平:

脚本测试视频

以及为什么我们应该在脚本中使用控制台用户界面或图形环境?

我们必须记住 图形用户界面也称为 GUI(图形用户界面)用于使用一组图像和图形对象表示下部界面中可用的信息和操作的方法。 它的主要用途包括 提供简单的视觉环境以允许与机器或计算机的操作系统进行通信。

我们通常通过与设备直接交互来执行操作,即通过键入命令或使用键盘执行脚本来进行。 ÿ GUI作为第一个操作系统的命令行的演变而出现 并成为图形环境中的基本要素。

并且在 人机交互过程GUI是一种交互式技术媒体,它使我们能够通过使用视觉语言和通过图形化上下文来与计算机系统进行友好的交互。

使用图形界面为我们提供了优点和缺点,例如:

优势之一: 简化程序的处理;通过图像或对象在屏幕上显示每个命令;向用户提供标准化的控制机制,例如窗口和对话框;允许用户以更轻松的方式与系统交互。

缺点: 它使用更多的操作系统资源,复杂性,开发时间以及进行此类开发的成本。

如果您想更多地了解如何在终端或桌面上制作新的,更漂亮的界面,我建议您学习一些用于构建对话框窗口的命令,这些命令可以使用bash脚本接收或提供可操作的信息,例如如:

对话:对话手册 为我们提供了您不同的选择。

Gxmessage:Gxmessage手册 为我们提供了您不同的选择。

热情:Zenity手册 为我们提供了您不同的选择。

而且,如果您想给您的脚本(程序)一个更加特殊的交互方式,可以使用 打击壳 或另一个 我建议使用这些其他程序,如果使用得当,它们可以帮助您创建真正的奇迹,而无需非常了解Shell脚本问题。 在这些程序中,我们有:

  • 通知发送: 这是非常有用的命令,用于通知事件,例如通知电子邮件何时到达,联系人在线以及提醒各种任务。 
  • 内容: 在许多事物中使用的命令用于将光标定位在屏幕上,从屏幕上擦除数据,知道屏幕上的行数和列数,正确定位字段,擦除其输入被检测为错误的字段。 无论如何,几乎所有的屏幕参数设置都由该命令完成。 
  • 结算: 该命令允许分别控制每个控制台和桌面的大写/小写字母,数字键盘和滚动键盘的激活和停用键。

好,到目前为止,这个系列!


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。