シェルスクリプティングを使用してプログラムを段階的に構築する-パート8

もう一度 ビエンベニドス この新しいに レッスン(#8) インクルード コース(チュートリアル) オン シェルスクリプト」。 上記で 7レッスン 特定の機能を備えたコードの特定のモジュール(セクション)を作成および/または作成する方法について、  Bashシェルを使用したシェルスクリプティング パフォーマンス通訳として。 これまでのところ、これらのモジュールは次のとおりです。

シェルスクリプト

へ行くこと 前の投稿(レッスン7) 次のリンクを押します。

この中で 8番目(XNUMX) 一方、いくつかのモジュールの構築に集中します。これらは次のとおりです。

プロキシ構成モジュール:


# 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

このモジュールの機能は、インターネット接続を必要とするタスクを実行するためのコンソールにプロキシが必要であることをプログラムに示すことです。 もし、あんたが 何も示さない (キー 入力します 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
             

このモジュールの機能は、 ウェルカムバナー 英数字と非英数字で手動で設計されたユーザーに。 次に、端末ごとの情報メッセージウィンドウ 対話 最後に、次のモジュールへの次のステップを制御するためのプログレスバー。

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つのレッスンで示したすべてのモジュールがどのように機能するかを確認し、その能力を証明します。 シェルスクリプト より高いレベルがあります:

スクリプトテストビデオ

また、スクリプトにコンソールユーザーインターフェイスまたはグラフィカル環境を使用する必要があるのはなぜですか?

私たちはそれを覚えておく必要があります グラフィカルユーザーインターフェイス、別名 GUI(グラフィカルユーザーインターフェイス) アール 画像とグラフィックオブジェクトのセットを使用して、下部のインターフェイスで利用可能な情報とアクションを表すために使用される手段。 その主な用途は マシンまたはコンピューターのオペレーティングシステムとの通信を可能にするシンプルな視覚環境を提供します。

通常、アクションは、機器と直接対話することによって、つまり、コマンドを入力するか、キーボードでスクリプトを実行することによって実行されます。 そして GUIは、最初のオペレーティングシステムのコマンドラインの進化形として登場しました グラフィック環境の基本的な部分になります。

そしての文脈で 人間とコンピューターの相互作用プロセス、GUIは、視覚言語の使用とグラフィックコンテキスト化を通じて、コンピューターシステムとの友好的な相互作用を可能にするインタラクティブな技術媒体です。

グラフィカルインターフェイスを使用すると、次のような長所と短所があります。

利点の中で: 手順の処理を容易にし、画像またはオブジェクトを介して画面に各コマンドを表示し、ウィンドウやダイアログボックスなどの標準化された制御メカニズムをユーザーに提供し、ユーザーがより簡単な方法でシステムと対話できるようにします。

不利な点の中で: より多くのオペレーティングシステムリソース、複雑さ、開発時間、およびそのような開発を行うためのコストを使用します。

ターミナルまたはデスクトップで新しくより美しいインターフェイスを作成する方法について詳しく知りたい場合は、bashスクリプトを使用して実用的な情報を受信または提供する機能を備えたダイアログウィンドウを構築するために使用されるいくつかのコマンドについて学ぶことをお勧めします。なので:

対話:ダイアログマニュアル あなたが持っているさまざまなオプションを私たちに与えます。

Gxmessage:Gxmessageマニュアル あなたが持っているさまざまなオプションを私たちに与えます。

Zenity:Zenityマニュアル あなたが持っているさまざまなオプションを私たちに与えます。

また、スクリプト(プログラム)にさらに特別でインタラクティブなタッチを加えたい場合は、 バッシュシェル またはその他 シェル(Shell) これらの他のプログラムを上手に使用すると、シェルスクリプトの問題にあまり熟練していなくても、真の驚異を生み出すのに役立つことをお勧めします。 これらのプログラムの中には次のものがあります。

  • 通知-送信: 電子メールの到着時の通知、連絡先のオンライン化、さまざまなタスクのリマインダーの作成などのイベントの通知を行うための非常に便利なコマンド。 
  • tput: 画面上にカーソルを置き、画面からデータを消去し、画面上の行と列の数を知り、フィールドを正しく配置し、入力がエラーとして検出されたフィールドを消去するために使用されるコマンド。 とにかく、画面のほとんどすべてのパラメータ化はこのコマンドによって行われます。 
  • 落ち着いた: コンソールとデスクトップごとに、大文字/小文字、数字キーボード、およびスクロールキーボードのアクティブ化キーと非アクティブ化キーを個別に制御できるコマンド。

さて、これまでのところこのシリーズ!


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。