သင့် program ကို Shell Scripting - အပိုင်း ၈ ကိုတစ်ဆင့်ပြီးတစ်ဆင့်တည်ဆောက်ပါ

ထဲမှာ အပိုင်း 1 ဒီစီးရီးရဲ့ကျနော်တို့ကိုဘယ်လိုအကောင်အထည်ဖော်ဖို့ကိုသတိရ:

နှင့်ယခင်သူများအတွက်ကျနော်တို့ထဲမှာကိုယျ့ကိုယျကိုစိမ် ပိုကောင်းတဲ့အလေ့အကျင့်များ အလွန်အစွမ်းထက်တဲ့ဖန်တီးသည့်အခါလိုက်နာရန် Linux အတွက် Bash မှ Shell script၊ အလွန်အထူးသဖြင့်တစ် ဦး ဒီဇိုင်း၏စည်းကမ်းချက်များ၌ Shebang နှင့် BSM (Bash Strict Mode / Strict Bash Mode) ။

GNU / Linux တွင် Shell Script ကိုဖန်တီးရန်အကောင်းဆုံးအလေ့အကျင့်များ - အပိုင်း ၂

GNU / Linux တွင် Shell Script ကိုဖန်တီးရန်အကောင်းဆုံးအလေ့အကျင့်များ - အပိုင်း ၂

 

Shell ဇာတ်ညွှန်းရေးခြင်း။ဒီ post မှာကျနော်တို့ a ဘယ်လိုအကောင်အထည်ဖော်ရန်ကိုကြည့်ပါလိမ့်မယ် Linux အတွက် Bash ရှိ Shell Script အတွက် Environment Variables Moduleငါ့ရဲ့ဥပမာတစ်ခုအဖြစ်ယူပြီး ပရိုဂရမ်များ (applications များ) တစ် ဦး အတွက်အချက်အလက်များ Shell script ကိုခေါ် Linux Post Install - Bicentennial Script 8.0, ဒါပေမယ့်ပထမ ဦး ဆုံး၏သေးငယ်တဲ့အကျဉ်းချုပ် ပိုကောင်းတဲ့အလေ့အကျင့်များ သူတို့ကိုအောက်မေ့။ ၊

  • သင့်ကုဒ်ကိုပြောင်းပါ
  • ကုဒ်အပိုင်းများအကြားခွဲခြားနေရာများထည့်ပါ,
  • ကုဒ်ပေါ်မှာတတ်နိုင်သလောက်မှတ်ချက်ပေးပါ
  • သူတို့ရဲ့လုပ်ဆောင်ချက်များကိုဖော်ပြရန်အမည်များဖြင့် variable များကိုဖန်တီးပါ။
  • command အစားထိုးများအတွက် syntax VARIABLE = $ (command) ကိုသုံးပါ
  • သတ်မှတ်ထားသောစကားဝှက်များနှင့်မပါဘဲသို့မဟုတ် Superuser နှင့်ခွင့်ပြုထားသောအသုံးပြုသူအတည်ပြုခြင်း၏ module နှင့် / သို့မဟုတ် variable များကိုသုံးပါ။
  • modules များနှင့် / သို့မဟုတ် variable များကိုအသုံးပြုပါ။ Operating System ၏ Validation (Distro, Version, Architecture ။ )
  • အရေးကြီးသော (သို့) အသုတ်လုပ်ခြင်း၏လုပ်ဆောင်မှုများကိုအတည်ပြုရန် module များ (လုပ်ထုံးလုပ်နည်းများ / အပိုင်းများ) ကို သုံး၍၊
  • အသုံးပြုရလွယ်ကူသောမျက်နှာပြင်များ (Userfriendly) - Terminal အားဖြင့် (Dialog ကို သုံး၍ Menus နှင့် Colors များ) နှင့် / သို့မဟုတ် Desktop (Windows တွင် Zenity and Gxmessage ကို အသုံးပြု၍)၊
  • လိုအပ်လျှင်အသုံးပြုသူသို့ကြိုဆိုခြင်းနှင့်နှုတ်ဆက်ခြင်း (မက်ဆေ့ခ်ျများ) ၏ module များထည့်သွင်းပါ။
  • နှစ်ချက်ကွပ်မျက်အတည်ပြုအတည်ပြု module ကိုထည့်သွင်းပါ,
  • script ၏အရွယ်အစားကို External Functions နှင့် / သို့မဟုတ် Modules များဖြင့်ဆင်ခြင်ပါ။
  • အခြားစကားပြန်များသို့ခေါ်ဆိုမှုများကိုရှင်းလင်း။ ရှင်းလင်းစွာဖော်ပြပါ။
  • သင်လိုအပ်သည်ဟုယူဆသောအခြားကျိုးကြောင်းဆီလျော်မှုနှင့်ဆင်ခြင်တုံတရားဆိုင်ရာထောက်ခံချက်များကိုအသုံးပြုပါ

ဒီဟာကဥပမာတစ်ခုပါ Linux အတွက် Bash ရှိ Shell Script အတွက် Environment Variables Module။ ဤသည်သောသူတို့အားအခြို့သောသို့မဟုတ်ဖြစ်နိုင်ခြေ variable တွေကိုပါရှိသည်သော module (အပိုင်း) ဖြစ်သင့်သည် Shell script လိုအပ်ပါတယ်သို့မဟုတ်ယင်း၏ကွပ်မျက်ဘို့လိုအပ်ပါလိမ့်မယ်။ ကျွန်ုပ်ကိုယ်တိုင်အောက်ပါတို့ကို ထပ်၍ ထည့်ပါ


###############################################################################
# INICIO DEL MODULO DE VARIABLES DE ENTORNO DEL SCRIPT
###############################################################################

NOM_SCRIPT=lpi_sb8_inicio_2016.sh
# echo $NOM_SCRIPT
# Almacenar como una variable predeterminada el Nombre real del Script

USR1_VALID=sysadmin
# echo $USR1_VALID
# Almacenar como una variable predeterminada el Nombre de Usuario valido que podrá ejecutar el Script.
# Haga una variable por cada Usuario Autorizado.

PASSWD_VALID=lpi*sb8
# echo $PASSWD_VALID
# Almacenar como una variable predeterminada el Nombre de la contraseña valida que permitirá ejecutar el Script.
# Haga una variable por cada contraseña de cada Usuario Autorizado.

S_O_VALID=kali
# echo $S_O_VALID
# Almacenar como una variable predeterminada el tipo de Sistema operativo valido para donde debe ser ejecutado el Script.

HOST_VALID=hostmovil-sysadmin
# echo $HOST_VALID
# Almacenar como una variable predeterminada el nombre del host valido donde debe ser ejecutado el Script.

IP_VALID=192.168.1.107
# echo $IP_VALID
# Almacenar como una variable predeterminada el nombre del host valido donde debe ser ejecutado el Script.

MAC_VALID=44:8a:5b:f0:3d:f3
# echo $MAC_VALID
# Almacenar como una variable predeterminada el nombre del host valido donde debe ser ejecutado el Script.

FILE_LOCK=lpi_sb_file_lock.txt
# echo $FILE_LOCK
# Almacenar el nombre de archivo predeterminada por el sistema para evitar doble ejecuciones ó detectar ejecuciones fallidas.

IDSUPERUSER=$(id -u | awk '{print $1}')
# IDSUPERUSER=$(echo $UID)
# IDSUPERUSER=$(getent passwd $USER | cut -d: -f3)
# echo $IDSUPERUSER
# Almacenar IUD del Superusuario root

USER_NAME_1=$(cat /etc/passwd | grep 1000 | cut -d: -f1 | awk '{print $1}')
HOME_USER_NAME_1=/home/$USER_NAME_1
# echo $USER_NAME_1 $HOME_USER_NAME_1
# Almacenar el nombre del usuario 1000 y su /home. Probable unico y primer Usuario del Sistema.

USER_NAME_2=$(cat /etc/passwd | grep 1001 | cut -d: -f1 | sed -n '2p' | awk '{print $1}')
HOME_USER_NAME_2=/home/$USER_NAME_2
# echo $USER_NAME_2 $HOME_USER_NAME_2
# Almacenar el nombre del usuario 1001 y su /home. Probable segundo Usuario del Sistema.

ID_USERNAME_SESSION=$(for i in $(who | sed 1q | cut -c 1-8); do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $1}' ; done | sed 1q)
# echo $ID_USERNAME_SESSION
# Almacenar el ID del Nombre del primer usuario (alfabeticamente) detectado conectado (con sesión abierta) en el sistema.

USERNAME_ID_SESSION=$(for i in $(who | sed 1q | cut -c 1-8); do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $2}' ; done ; echo $i)
# echo $USERNAME_ID_SESSION
# Almacenar el Nombre del primer usuario (alfabeticamente) detectado conectado (con sesión abierta) en el sistema.

# ID_FIRST_USERNAME=$(for i in 1000 1001 1002 1003 1004; do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $1}' ; done | sed -n '1p')
# echo $ID_FIRST_USERNAME
# Almacenar el ID del Nombre del primer usuario creado en el sistema entre los ID del 1000 al 1005.
# Nota: Solo funciona con la opción -o desactivada del MODO BASH ESTRICTO ó SEGURO (Bash Strict Mode / BSM)

# ID_FIRST_USERNAME=$(for i in $(seq 1000 1999); do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $1}' ; done | sed -n '1p')
# echo $ID_FIRST_USERNAME
# Almacenar el ID del Nombre del primer usuario creado en el sistema.
# Nota: Solo funciona con la opción -o desactivada del MODO BASH ESTRICTO ó SEGURO (Bash Strict Mode / BSM)

UBICACION=$(echo $PWD)
# UBICACION=$(pwd)
# echo $UBICACION
# Almacenar ruta de ejecución del Script LPI-SB

FECHA_SISTEMA_AN=$(date +"%d %b %y")
# echo $FECHA_SISTEMA_AN
# Almacenar la fecha  Alfanumerica actual del Equipo

FECHA_SISTEMA_N=$(date +"%d %m %y")
# echo $FECHA_SISTEMA_N
# Almacenar la fecha Numerica actual del Equipo

DIA_ACTUAL=$(date +"%d")
# echo $DIA_ACTUAL
# Almacenar el día actual del Equipo

MES_ACTUAL_A=$(date +"%b")
# echo $MES_ACTUAL_A
# Almacenar el mes alfabetico actual del Equipo

MES_ACTUAL_N=$(date +"%m")
# echo $MES_ACTUAL_N
# Almacenarel mes numerico actual del Equipo

ANO_ACTUAL_2C=$(date +"%y")
# echo $ANO_ACTUAL_2C
# Almacenar el año (con 2 cifras) actual del Equipo

ANO_ACTUAL_4C=$(date +"%Y")
# echo $ANO_ACTUAL_4C
# Almacenar el año (con 4 cifras) actual del Equipo

HORA_SISTEMA=$(date +"%H:%M")
# echo $HORA_SISTEMA
# Almacenar la Hora actual del Equipo

HORA_ACTUAL=$(date +"%H")
# echo $HORA_ACTUAL
# Almacenar la Hora actual del Equipo

MINUTOS_ACTUAL=$(date +"%M")
# echo $MINUTOS_ACTUAL
# Almacenar la Hora actual del Equipo

TIPO_S_O_L=$(uname -o)
# echo $TIPO_S_O_L
# Almacena el nombre largo del tipo de Sistema Operativo encontrado.

TIPO_S_O_C=$(uname -s)
# echo $TIPO_S_O_C
# Almacena el nombre corto del tipo de Sistema Operativo encontrado.

NOM_DISTRO_L=$(cat /etc/os-release | grep NAME | grep -v "VERSION" | sed -n '2p' | cut -f2 -d\")
# NOM_DISTRO_L=$(lsb_release -d | sed 's/Description://')
# echo $NOM_DISTRO_L
# Almacena el nombre largo de la Distro detectada.

NOM_DISTRO_C=$(cat /etc/os-release | grep NAME | grep -v "VERSION" | sed -n '2p' | cut -f2 -d\" | awk '{print $1}')
# NOM_DISTRO_C=$(lsb_release -d | sed 's/Description://' | awk '{print $1}')
# echo $NOM_DISTRO_C
# Almacena el nombre corto de la Distro detectada.

ID_DISTRO=$(cat /etc/os-release | grep ID | grep -v "VERSION_ID" | grep -v "ID_LIKE" | sed 's/ID=//' | sed 's/"//g')
# ID_DISTRO=$(lsb_release -i | awk '{print $3}')
# echo $ID_DISTRO
# Almacena el ID de la Distro detectada.

VER_DISTRO=$(cat /etc/os-release | grep VERSION= | sed -n '1p' | sed 's/VERSION=//' | sed 's/"//g')
# VER_DISTRO=$(lsb_release -c | sed 's/Codename://')
# echo $VER_DISTRO
# Almacena el nombre de la versión de la Distro detectada.

ID_VER_DISTRO=$(cat /etc/os-release | grep VERSION_ID= | sed -n '1p' | sed 's/VERSION_ID=//' | sed 's/"//g')
# ID_VER_DISTRO=$(lsb_release -r | sed 's/Release://')
# echo $ID_VER_DISTRO
# Almacena el ID de la versión de la Distro detectada.

ARQ_DISTRO_COD=$(uname -m)
# echo $ARQ_DISTRO_COD
# Almacenar el Tipo de Arquitectura de la Distro detectada en forma codificada.

ARQ_DISTRO_COD=$(uname -m) ; if [[ "$ARQ_DISTRO_COD" = "x86" ]]; then ARQ_DISTRO_HUM=32; else ARQ_DISTRO_HUM=64; fi
# echo $ARQ_DISTRO_HUM
# Convertir el Tipo de Arquitectura de la Distro detectada en forma codificada a forma humana.

VER_KERNEL=$(uname -r)
# echo $VER_KERNEL
# Almacenar el Nombre del Arquitectura de la Distro detectada.

NOM_HOST=$(cat /etc/hostname)
# echo $NOM_HOST
# Almacenar el Nombre del Host donde se ejecuta el Script.

IP_ETH0=$(ifconfig eth0 | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d " " -f 1)
MAC_ETH0=$(ifconfig eth0 | sed -n '1p' | awk '{print $5}')
# IP_INTERNA=$(hostname -I)
# echo $IP_ETH0 $MAC_ETH0
# Almacenar la IP / MAC del Host donde se ejecuta el Script.

echo "Variables de entorno cargadas sin errores, en 5 segundos la aplicación continuará ejecutandose"
sleep 5

###############################################################################
# FINAL DEL MODULO DE VARIABLES DE ENTORNO DEL SCRIPT
###############################################################################

===============

မှတ်စု: သင်၏လိုအပ်ချက်များသို့မဟုတ်အကောင်အထည်ဖော်မှုပေါ် မူတည်၍ command command ကိုထည့်နိုင်သည် my_variable တင်ပို့ပါ ယခင် variable များ၏တစ်ခုချင်းစီကိုအောက်မှာဖန်တီးပြီးသို့မဟုတ် command command ဖြင့်တိုက်ရိုက်ဖန်တီးထားသောသင်၏ကိုယ်ပိုင် variable များကို ဖန်တီး၍ တင်ပို့ပါ my_variable = my_parameters တင်ပို့ပါ

နောင်ပို့စ်များတွင်ဥပမာတစ်ခုကိုဆက်ကြည့်မည် module များ (အပိုင်းများ) ထိုကဲ့သို့သောလုပ်ဆောင်ချက်များကိုလုပ်ဆောင်သော

  • နှစ်ဆ Execution ရှာဖွေရေး MODULE သို့မဟုတ်ပျက်ကွက် execute
  • Optimization Module
  • သုံးစွဲသူခွင့်ပြုချက်ပုံစံနှင့်စကားဝှက်
  • လည်ပတ်မှုစနစ်၏မော်ကွန်းတိုက်ရှာဖွေတွေ့ရှိမော်ဒယ်
  • LANGUAGE CONFIGURATION MODULLE ကိုလုပ်နိုင်သည်
  • Execution ပတ်ဝန်းကျင်အတွက် Proxig Configure module

အခြားသူများစွာထဲမှ!

သူတို့ဟာကိုယ့်ဘာသာကိုယ်သင်ကြားလို့ရပါတယ်: gksu, ဒိုင်ယာလော့ခ်, gxmessage, zenity, espeak, ကစားပါအခြားသူများအကြား Terminal မှသို့မဟုတ် User Desktop အတွက်ဂရပ်ဖစ်မျက်နှာပြင်များကို Sonic သို့မဟုတ် multimedia alerts များဖန်တီးရန်, သူတို့နောက်မှအသုံးပြုလိမ့်မည်ဟုအသိပညာတိုး။

ဤနှင့်အချို့အပေါ်အခြားမည်သည့်အကြံပြုချက်များသတိရပါ module, function ကို, variable ကို, command ကိုသို့မဟုတ်အရေးယူ ယေဘူယျအားဖြင့်ထုတ်ယူနိုင်ပါတယ် နည်းလမ်းများစွာဒီမှာပြထားတဲ့အတိုင်းပဲ ရိုးရှင်းတဲ့နည်းလမ်းဖြစ်နိုင်သမျှနည်းလမ်းများနှင့်ဖြစ်နိုင်ခြေနည်းလမ်းများစွာ သောကပြောသည် အရေးယူသို့မဟုတ်ထွက်သယ်ဆောင်နိုင်ပါတယ်!

ပြီးရင်တော့မင်းကိုထားခဲ့မယ် ငါကပြသသည့်ရုပ်သံ, သင်ဒီပြီးသွားပြီးနောက်, သင်နိုင်စွမ်းပါလိမ့်မယ်အဘယ်အရာကိုပြသနိုင်ဖို့ DesdeLinux ရှိ Shell Scripting အွန်လိုင်းသင်တန်း:

LPI-SB8 စမ်းသပ်မှု ScreenCast

(LINUX POST ကိုထည့်သွင်းပါ - BICENTENNIAL SCRIPT 8.0.0) - အပိုင်း 2

 


ဆောင်းပါး၏ပါ ၀ င်မှုသည်ကျွန်ုပ်တို့၏အခြေခံမူများကိုလိုက်နာသည် အယ်ဒီတာအဖွဲ့ကျင့်ဝတ်။ အမှားတစ်ခုကိုသတင်းပို့ရန်ကလစ်နှိပ်ပါ ဒီမှာ.

2 မှတ်ချက်များ, သင့်စွန့်ခွာ

သင်၏ထင်မြင်ချက်ကိုချန်ထားပါ

သင့်အီးမေးလ်လိပ်စာပုံနှိပ်ထုတ်ဝေမည်မဟုတ်ပါ။

*

*

  1. အချက်အလက်အတွက်တာဝန်ရှိသည် - Miguel ÁngelGatón
  2. အချက်အလက်များ၏ရည်ရွယ်ချက်: ထိန်းချုပ်ခြင်း SPAM, မှတ်ချက်စီမံခန့်ခွဲမှု။
  3. တရားဝင်: သင်၏ခွင့်ပြုချက်
  4. အချက်အလက်များ၏ဆက်သွယ်မှု - ဒေတာများကိုဥပဒေအရတာ ၀ န်ယူမှုမှ လွဲ၍ တတိယပါတီများသို့ဆက်သွယ်မည်မဟုတ်ပါ။
  5. ဒေတာသိမ်းဆည်းခြင်း: Occentus ကွန်ယက်များ (အီးယူ) မှလက်ခံသည့်ဒေတာဘေ့စ
  6. အခွင့်အရေး - မည်သည့်အချိန်တွင်မဆိုသင်၏အချက်အလက်များကိုကန့်သတ်၊

  1.   နာမည်မရှိ ဟုသူကပြောသည်

    လူသားများအတွက်ရက်စွဲ:
    ပဲ့တင်သံ -e « \ အီး [1; 32mDate: » $ (ရက်စွဲ« +% d-% m-% Y ကို») « \ အီး [1; 32 သန်းအချိန်: » $ (နေ့စွဲ« +% T က»)

    စစ်မှန်သော "uname -s"
    ကြောင် / proc / sys / kernel ကို / ostype

    Distro နာမည်:
    ကြောင် / etc / * လွှတ်ပေးရန်။ -f2 -d ဖြတ်» | ခေါင်း -1

    hostname:
    ကြောင် / proc / sys / kernel ကို / hostname

    OS ဗိသုကာ:
    [[-x / sbin / init]] && file / sbin / init | awk '{{ပုံနှိပ် $ 7}' | TR -d ',' || [[-x / lib / systemd / systemd]] && file / lib / systemd / systemd | awk '{{ပုံနှိပ် $ 7}' | TR -d '' 2> / dev / တရားမဝင်သော

    Kernel မူကွဲ
    ကြောင် / proc / sys / kernel ကို / osrelease

  2.   Ing ။ ဟိုဆေးအဲလ်ဘတ် ဟုသူကပြောသည်

    သင်၏ပထမဆုံးထည့်ဝင်မှု "လူသားများအတွက်ရက်စွဲ" ကိုကျွန်ုပ်ကြိုက်ခဲ့သည်၊

    နေ့စွဲ: 11-02-2016 အချိန်: 16:04:10

    ဘယ်ဟာထိရောက်စွာ dialog, zenity သို့မဟုတ် gxmessage ဝင်းဒိုး၌အလွန်အမြင်အာရုံ digestible ပါ!

    သင်၏ဒုတိယအကြံပြုချက်နှင့်အတူဤအရာကိုကျွန်ုပ်လိုချင်သည်။

    မှန်လျှင် "uname -s" && cat / proc / sys / kernel / ostype; ထို့နောက် "Operating system validated" ကိုပဲ့တင်ထပ်ပါ။ fi | ရေငတ် 1d

    နောက်ဆုံးအနေဖြင့်သင်၏ကြွယ်ဝသောပံ့ပိုးမှုများအတွက်အမြဲကျေးဇူးတင်ပါသည်။