قم ببناء برنامجك خطوة بخطوة باستخدام Shell Scripting - الجزء 8

مرة أخرى ترحيب لهذا الجديد الدرس (# 8) من دورة (تعليمي) في البرمجة النصية شل ". في ما سبق 7 lecciones تمكنا من إنشاء و / أو التعرف على كيفية إنشاء وحدات (أقسام) معينة من الرموز بوظائف محددة من خلالها  البرمجة النصية باستخدام شل Bash Shell كمترجم أداء. هذه الوحدات حتى الآن هي:

برمجة شل

للذهاب إلى المنشور السابق (الدرس 7) اضغط على الرابط التالي:

Ebben الثامنة (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

وظيفة هذه الوحدة هي الإشارة للبرنامج إلى أن وحدة التحكم لأداء المهام التي تتطلب اتصالاً بالإنترنت تتطلب وكيلاً. اذا أنت لا يشير إلى أي شيء (مفتاح أدخل دون وضع أي 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               

تتمثل وظيفة هذه الوحدة في إظهار رسالة بواسطة وحدة التحكم في الوداع وحذف ملف التنفيذ الناجح.

استمرارية الأمم المتحدة سكرينكست حيث يتم عرض كيفية تنفيذ هذه الوحدات والوحدات السابقة بحيث يتحققون من كيفية عمل جميع الوحدات المعروضة خلال الدروس الثمانية السابقة ، ويصادقون على قوة برمجة شل لديه مستوى أعلى:

فيديو اختبار البرنامج النصي

ولماذا يجب أن نستخدم واجهات مستخدم وحدة التحكم أو بيئة رسومية لسيناريونا؟

يجب أن نتذكر ذلك واجهات المستخدم الرسومية، المعروف أيضا باسم واجهة المستخدم الرسومية (GUI) هي الوسيط المستخدم لتمثيل المعلومات والإجراءات المتاحة في الواجهة السفلية ، باستخدام مجموعة من الصور والكائنات الرسومية. استخدامه الرئيسي يتكون من توفير بيئة مرئية بسيطة للسماح بالاتصال بنظام تشغيل الجهاز أو الكمبيوتر.

عادةً ما نقوم بتنفيذ الإجراءات من خلال التفاعل المباشر مع الجهاز ، أي عن طريق كتابة الأوامر أو تنفيذ برنامج نصي باستخدام لوحة المفاتيح. و تظهر واجهات المستخدم الرسومية كتطور لسطر الأوامر لأنظمة التشغيل الأولى وأصبحت القطعة الأساسية في بيئة رسومية.

وفي سياق عملية التفاعل بين الإنسان والحاسوب، واجهة المستخدم الرسومية هي الوسيلة التكنولوجية التفاعلية التي تمكننا ، من خلال استخدام اللغة المرئية ووضعها في سياقها الرسومي ، من التفاعل الودي مع نظام الكمبيوتر.

يوفر لنا استخدام الواجهات الرسومية مزايا وعيوب ، مثل:

من بين المزايا: تسهيل معالجة الإجراءات ، عرض كل أمر على الشاشة من خلال صورة أو كائن ، توفير آليات تحكم موحدة مثل النوافذ ومربعات الحوار للمستخدم ، والسماح للمستخدم بالتفاعل مع النظام بطريقة أسهل.

من بين العيوب: يستخدم المزيد من موارد نظام التشغيل ، والتعقيد ، ووقت التطوير ، وتكلفة القيام بهذا التطوير.

إذا كنت تريد معرفة المزيد حول كيفية إنشاء واجهات جديدة وأكثر جمالًا في Terminal أو على سطح المكتب ، فإنني أوصيك بالتعرف على بعض الأوامر المستخدمة لإنشاء نوافذ حوار مع القدرة على تلقي أو إعطاء معلومات قابلة للتنفيذ باستخدام البرامج النصية bash ، مثل مثل:

الحوار: في دليل الحوار يعطينا الخيارات المختلفة التي لديك.

رسالة Gx: في دليل Gxmessage يعطينا الخيارات المختلفة التي لديك.

زينتي: في دليل Zenity يعطينا الخيارات المختلفة التي لديك.

وإذا كنت ترغب في إضفاء لمسة خاصة وتفاعلية على البرنامج النصي (البرامج) الخاص بك إما باستخدام باش شل أو غيرها قذيفة أوصي بهذه البرامج الأخرى ، التي تُستخدم جيدًا ، يمكن أن تساعدك في إنشاء عجائب حقيقية دون أن تكون ماهرًا جدًا في مشكلات البرمجة النصية لـ Shell. من بين هذه البرامج لدينا:

  • إرسال الإخطار: أمر مفيد للغاية لعمل إشعارات لأحداث مثل الإخطار عند وصول بريد إلكتروني ، يتم وضع جهة اتصال على الإنترنت وتذكير بمهام مختلفة. 
  • وضع: الأمر الذي يتم استخدامه من بين أشياء كثيرة لوضع المؤشر على الشاشة ، ومسح البيانات من الشاشة ، ومعرفة عدد الأسطر والأعمدة على الشاشة ، ووضع الحقل بشكل صحيح ، ومسح الحقل الذي تم اكتشاف إدخاله على أنه خطأ. على أي حال ، يتم تنفيذ كل معلمات الشاشة تقريبًا بواسطة هذا الأمر. 
  • سيتليدز: الأمر الذي يسمح بالتحكم في مفاتيح التنشيط وإلغاء التنشيط للأحرف الكبيرة / الصغيرة ولوحة المفاتيح الرقمية ولوحة المفاتيح القابلة للتمرير بشكل فردي لكل وحدة تحكم وسطح مكتب.

حسنًا ، حتى الآن هذه السلسلة!


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.