Į dalis 1 iš šios serijos prisimename, kaip įgyvendinti:
Ir ankstesnėse mes pamerkėme save į geresnę praktiką laikytis kuriant puikų „Shell“ scenarijus „Bash“, skirtas „Linux“, ir labai konkrečiai kalbant apie projektavimą a „Shebang“ ir „BSM“ (griežtas „Bash“ režimas / griežtas „Bash“ režimas).
Geriausia „Shell“ scenarijaus kūrimo praktika naudojant GNU / Linux - 1 dalis
Geriausia „Shell“ scenarijaus kūrimo praktika naudojant GNU / Linux - 2 dalis
Šiame įraše pamatysime, kaip įgyvendinti a Aplinkos kintamųjų „Shell“ scenarijaus „Bash“, skirtos „Linux“, modulis, kaip vieną iš mano pavyzdžių programos (programos) faktai a „Shell“ scenarijus vadinamas „Linux Post Install“ - dvidešimtmetis scenarijus 8.0, bet pirmiausia nedidelė geresnę praktiką kad nepamirštumėte jų:
- Indente savo kodą,
- Pridėkite tarpų tarp kodo skyrių,
- Pakomentuok kodą kuo daugiau,
- Sukurkite kintamuosius su aprašomaisiais jų funkcijų pavadinimais,
- Komandos pakeitimui naudokite sintaksę VARIABLE = $ (komanda)
- Naudokite modulius ir (arba) kintamuosius: „Superuser“ ir „Authorized User Validation“ su nustatytais slaptažodžiais arba be jų.
- Naudokite modulius ir (arba) kintamuosius: operacinės sistemos patvirtinimas (be kita ko, „Distro“, „Version“, „Architecture“),
- Naudokite modulius (procedūras / skyrius), kad patvirtintumėte kritinių ar paketinių veiksmų (veiklų / funkcijų) vykdymą,
- Pateikite patogias naudoti sąsajas (patogias naudoti): pagal terminalą (su meniu ir spalvomis naudojant dialogą) ir (arba) darbalaukį (naudojant „Windows“ naudojant „Zenity“ ir „Gxmessage“),
- Jei reikia, įtraukite vartotojui pasveikinimo ir atsisveikinimo modulius (pranešimus),
- Įtraukite dvigubą vykdymo patikrinimo modulį,
- Racionalizuokite scenarijaus dydį naudodami išorines funkcijas ir (arba) modulius,
- Aiškiai ir aiškiai iškvieskite kitus vertėjus,
- Taikykite kitas logiškas ir racionalias rekomendacijas, kurias manote esant reikalingas.
Štai pavyzdys Aplinkos kintamųjų „Shell“ scenarijaus „Bash“, skirtos „Linux“, modulis. Tai turėtų būti modulis (skyrius), kuriame yra visi tie tikri arba tikėtini kintamieji, kuriuos „Shell“ scenarijus poreikių ar reikės jo vykdymui. Aš asmeniškai pridedu:
###############################################################################
# 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
###############################################################################
===============
dėmesį: Priklausomai nuo jūsų reikalavimų ar įgyvendinimų, galite pridėti komandą eksportuoti „my_variable“ žemiau kiekvieno iš ankstesnių sukurtų kintamųjų arba sukurkite ir eksportuokite savo kintamuosius, sukurtus tiesiogiai naudodami komandą eksportuoti my_variable = my_parameters
Vėliau būsimuose įrašuose ir toliau matysime pavyzdį moduliai (skyriai) kurie atlieka tokias funkcijas kaip:
- Dvigubo vykdymo aptikimo modulis arba nesėkmingas vykdymas
- OPTIMIZAVIMO MODULIS
- VARTOTOJO PATVIRTINIMO MODULIS SU Slaptažodžiu
- VEIKLOS SISTEMOS ARCHITEKTŪROS ATRADIMO MODULIS
- KODAVIMO KALBOS KONFIGURAVIMO MODULIS
- VYKDYMO APLINKOS PRAKTINIO KONFIGURAVIMO MODULIS
Tarp daugelio kitų!
Jie gali savarankiškai mokytis apie komandas: gksu, dialogas, gxmessage, zenity, espeak, play, tarp daugelio kitų sukurti grafines sąsajas naudojant terminalą arba „User Desktop“ su garsiniais ar daugialypės terpės įspėjimaisir įgykite žinių, kurias jie panaudos vėliau.
Atminkite, kad kai kurios iš šių ir kitų rekomendacijų modulis, funkcija, kintamasis, komanda ar veiksmas apskritai tai galima atlikti daug būdų, o tai, kas čia parodyta, yra tik viena paprastas būdas, iš daug galimų ir tikėtinų būdų kuriame pasakė veiksmą galima arba galima atlikti!
Kad pabaigčiau, palieku tave, a Mano sukurtas ekrano perdavimas, kad parodytumėte, ką galėtumėte tai atlikti „Shell Scripting“ internetinis kursas DesdeLinux:
(„LINUX POST INSTALL“ - „SCRIPT BICENTENARIO 8.0.0“) - 2 dalis
Data žmonėms:
echo -e «\ e [1; 32mData:» $ (data «+% d-% m-% Y») «\ e [1; 32m Laikas:» $ (data «+% T»)
Tikrasis „uname -s“:
cat / proc / sys / branduolys / ostype
Distro pavadinimas:
katė / etc / * paleidimas | supjaustyti -f2 -d »| galva -1
Pagrindinio kompiuterio pavadinimas:
katė / proc / sys / branduolys / pagrindinio kompiuterio vardas
OS architektūra:
[[-x / sbin / init]] && failas / sbin / init | awk '{print $ 7}' | tr -d ',' || [[-x / lib / systemd / systemd]] ir& failas / lib / systemd / systemd | awk '{print $ 7}' | tr -d ',' 2> / dev / null
Branduolio versija:
cat / proc / sys / branduolys / osrelease
Man labai patiko jūsų pirmasis indėlis „data žmonėms“, nes rezultatas būtų pavyzdys:
Data: 11-02-2016 Laikas: 16:04:10
Kuris dialogo, zenity ar gxmessage lange yra vizualiai virškinamas!
Savo antruoju pasiūlymu norėčiau jį pateikti taip:
jei tiesa "uname -s" && cat / proc / sys / kernel / ostype; tada aidas "Operacinė sistema patvirtinta"; fi | troškulys 1d
Ir galiausiai, labai ačiū už jūsų turtingą indėlį kaip visada!