使用Shell腳本逐步構建程序-第8部分

再來一次 bienvenidos 到這個新 課程(#8) 德爾 課程(教程) Shell腳本”。 在上面 7節課 我們能夠通過以下方式製作和/或了解如何創建具有特定功能的某些代碼模塊(部分)  使用Bash Shell的Shell腳本 作為表演翻譯。 到目前為止,這些模塊是:

Shell Scripting

以前的帖子(第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連接的任務的控制台需要代理。 如果你 什麼也沒表示 (鍵 Enter 無需輸入任何IP),程序將假定 無需代理,否則您必須指出一個 IP:端口,以便它配置臨時出站代理並執行連接。

Selection_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
             

該模塊的功能是顯示 歡迎橫幅 給用戶手動設計的字母數字和非字母數字字符。 然後每個終端的信息性消息窗口 dialog 最後是進度條,用於控製到下一個模塊的下一步。

Selection_002

Selection_003

Selection_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

該模塊的功能是創建一個菜單類型的窗口,該窗口允許同時使用鍵盤和鼠標來選擇一個選項。 每個選項都可以 執行命令,命令,模塊,函數或其他腳本。 在這種情況下, 將值存儲在變量中 這將允許 根據其內容確定訂單。

Selection_005

Selection_006

Selection_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的桌面環境的圖形界面。

Selection_008

Selection_009

Selection_010

Selection_010

Selection_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 Scripting 具有較高的水平:

腳本測試視頻

以及為什麼我們應該在腳本中使用控制台用戶界面或圖形環境?

我們必須記住 圖形用戶界面也稱為 GUI(圖形用戶界面) 他們是 用於使用一組圖像和圖形對象表示下部界面中可用信息和操作的媒體。 它的主要用途包括 提供簡單的視覺環境以允許與機器或計算機的操作系統進行通信。

我們通常通過與設備直接交互來執行操作,即通過鍵入命令或使用鍵盤執行腳本來進行。 和 GUI作為第一個操作系統的命令行的演變而出現 並成為圖形環境中的基本要素。

並且在 人機交互過程GUI是一種交互式技術媒體,它使我們能夠通過使用視覺語言和通過圖形化上下文來與計算機系統進行友好的交互。

使用圖形界面為我們提供了優點和缺點,例如:

優勢之一: 簡化程序的處理;通過圖像或對像在屏幕上顯示每個命令;向用戶提供標準化的控制機制,例如窗口和對話框;允許用戶以更輕鬆的方式與系統交互。

缺點: 它使用更多的操作系統資源,複雜性,開發時間以及進行此類開發的成本。

如果您想更多地了解如何在終端或桌面上製作新的,更漂亮的界面,我建議您學習一些用於構建對話框窗口的命令,這些命令能夠使用bash腳本接收或提供可操作的信息,例如:

對話:對話手冊 為我們提供了您不同的選擇。

Gxmessage:Gxmessage手冊 為我們提供了您不同的選擇。

熱情:Zenity手冊 為我們提供了您不同的選擇。

而且,如果您想給您的腳本(程序)一個更加特殊的交互方式,可以使用 Bash Shell 或另一個 壳类 我建議使用這些其他程序,如果使用得當,它們可以幫助您創建真正的奇蹟,而無需精通Shell腳本問題。 在這些程序中,我們有:

  • 通知發送: 這是非常有用的命令,用於通知事件,例如通知電子郵件何時到達,聯繫人在線以及提醒各種任務。 
  • 內容: 該命令用於在屏幕上定位光標,從屏幕上擦除數據,了解屏幕上的行數和列數,正確定位字段,擦除其輸入被檢測為錯誤的字段。 無論如何,幾乎所有的屏幕參數設置都由該命令完成。 
  • 結算: 該命令允許分別控制每個控制台和桌面的大寫/小寫字母,數字鍵盤和滾動鍵盤的激活和停用鍵。

好,到目前為止,這個系列!


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。