El Shell Scripting, Ajo i referohet ekzekutimi i urdhrave komplekse rreth Terminali GNU / Linux (Console), është shumë e dobishme të automatizojmë aktivitetet rutinë dhe të rëndësishme brenda aktiviteteve tona Sistemi Operativ GNU / Linux, gjë që na lejon të zgjedhim tonat Burimet dhe koha, kjo është, me atë që përmbahet këtu ne do të shqyrtojmë se si nga terminali mund të ekzekutojmë urdhra manualë të komandës që më pas na lejojnë orarin / automatizimin aktivitetet në lidhje me kursimin e një ekipi Orët / Puna të ekzekutimit manual ose ballë për ballë, duke zbatuar urdhrat e përmendur në një Shkrim Bash Shell ose të përputhshëm dhe të shpjeguara në një mënyrë praktike dhe të thjeshtë.
Ne do të mbulojmë si në një komandë e vetme komanduese Podemos nxjerr dhe shfaq vlerat / informacionet nga Sistemi Operativ / Hardware, të cilën më pas mund ta implementojmë brenda një Skenari Bash Shell për të automatizuar një detyrë specifike. Duke u përqëndruar në Praktikat më të mira e nevojshme për të marrë një model të shkëlqyeshëm të një Skripti më efikase dhe praktike.
--------------------
Merrni emrin e përdoruesit të parë të krijuar në sistem:
--------------------
USER_1000=$(cat /etc/passwd | grep 1000 | cut -d: -f1) ; echo $USER_1000
USER_1001=$(cat /etc/passwd | grep 1001 | cut -d: -f1) ; echo $USER_1001
----------------------
Merrni rrugën / shtëpinë e përdoruesit të parë të krijuar në sistem:
----------------------
USER_1000=$(cat /etc/passwd | grep 1000 | cut -d: -f1) ; HOME_USER_1000=/home/$USER_1000 ; echo $HOME_USER_1000
USER_1001=$(cat /etc/passwd | grep 1001 | cut -d: -f1) ; HOME_USER_1001=/home/$USER_1001 ; echo $HOME_USER_1001
-------------
Kontrolloni datën e pajisjeve aktuale:
-------------
FECHA_ACTUAL=$(date +"%d %b %y") ; echo $FECHA_ACTUAL
------------
Kontrolloni kohën aktuale të pajisjeve:
------------
HORA_ACTUAL=$(date +"%H:%M") ; echo $HORA_ACTUAL
————————————————–
Kontrolloni nëse Pritësi ka një lidhje interneti:
————————————————–
if ping -c 1 8.8.8.8 &> /dev/null; then CONEXION_INTERNET=Habilitado; else CONEXION_INTERNET=Deshabilitado; fi ; echo $CONEXION_INTERNET
TEST_PING=$(ping 192.168.3.249 -c 5 | grep packet | awk '{print $6}' | cut -f1 -d%) ; echo $TEST_PING % de Perdida de paquetes
TEST_LATENCIA=$(ping 8.8.8.8 -c 5 | grep packet | awk '{print $10}' | cut -f1 -d%) ; echo $TEST_LATENCIA de Latencia del Enlace
-------------
Kontrolloni llojin e sistemit operativ:
-------------
SISTEMA_OPERATIVO=$(uname -o) ; echo $SISTEMA_OPERATIVO
----------------------
Kontrolloni emrin, versionin dhe përmbysjen e sistemit operativ:
----------------------
NOMBRE_SISTEMA=$(cat /etc/os-release | grep NAME | grep -v "VERSION" | sed -n '2p' | cut -f2 -d\") ; echo $NOMBRE_SISTEMA
VERSION_SISTEMA=$(cat /etc/os-release | grep VERSION= | sed -n '1p' | sed 's/VERSION=//' | sed 's/"//g') ; echo $VERSION_SISTEMA
SUBVERSION_SISTEMA=$(lsb_release -d | awk '{print $4}') ; echo $SUBVERSION_SISTEMA
----------------
Kontrolloni arkitekturën e sistemit operativ:
----------------
ARQUITECTURA=$(uname -m) ; echo $ARQUITECTURA
ARQUITECTURA=$(uname -m) ; if [[ "$ARQUITECTURA" = "x86" ]]; then ARQ_SISTEMA=32; else ARQ_SISTEMA=64; fi ; echo $ARQ_SISTEMA
------------------
Kontrolloni versionin e kernelit të Sistemit Operativ:
------------------
VERSION_KERNEL=$(uname -r) ; echo $VERSION_KERNEL
----------
Kontrolloni emrin e hostit:
----------
NOMBRE_HOST=$(cat /etc/hostname) ; echo $NOMBRE_HOST
----------------------
Kontrolloni IP-në e Brendshme dhe të Jashtme (Dalja Kryesore e Internetit):
----------------------
IP_INTERNA=$(hostname -I) ; echo $IP_INTERNA
IP_EXTERNA=$(curl -s ipecho.net/plain;echo) ; echo $IP_EXTERNA
------------------
Kontrolloni vlerat (IP / MAC) të ndërfaqeve të rrjetit:
------------------
IP_ETH0=$(ifconfig eth0 | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d " " -f 1) ; echo $IP_ETH0
MAC_ETH0=$(ifconfig eth0 | sed -n '1p' | awk '{print $5}') ; echo $MAC_ETH0
IP_WLAN0=$(ifconfig wlan0 | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d " " -f 1) ; echo $IP_WLAN0
MAC_WLAN0=$(ifconfig wlan0 | sed -n '1p' | awk '{print $5}') ; echo $MAC_WLAN0
——————————————————
Kontrolloni Proxy / Gateway të Sistemit Operativ:
——————————————————
PROXY_GATEWAY=$(route -n | sed -n '3p' | awk '{print $2}') ; echo $PROXY_GATEWAY
————————————————–
Kontrolloni emrin e domenit të rrjetit host:
————————————————–
DOMINIO=$(cat /etc/resolv.conf | sed '2 d' | grep search | sed -n '1p' | awk '{print $2}') ; echo $DOMINIO
---------------------
Kontrolloni adresën e rrjetit (IP) të serverit DNS host:
---------------------
IP_SERVIDOR_DNS=$(cat /etc/resolv.conf | sed '1 d' | awk '{print $2}') ; echo $IP_SERVIDOR_DNS
-------------
Kontrolloni përdoruesit e lidhur me hostin:
-------------
who>/tmp/who ; echo -e "Usuarios conectados al Host :" && echo "" && echo "Usuarios Puertos Fecha Hora Pantalla" ; echo "*************************************************************************" && cat /tmp/who
USUARIOS_CONECTADOS=$(who | awk '{print $1}') ; echo $USUARIOS_CONECTADOS
USER_ONLINE1=$(who | awk '{print $1}') ; echo $USER_ONLINE1 | wc -w
USER_ONLINE2=$(top -n 1 -b | grep "load average:" | awk '{print $6}') ; echo $USER_ONLINE2
---------------------------------
Kontrolloni Dosjen e Përdoruesit me më shumë të dhëna (# nga Skedarët / Madhësia në Bajte) në sistemin operativ:
----------------------------------
CARPETA_USUARIO1=$(ls -l /home | sed '1 d' | sort -k2 | sed q | awk '{print $9}') ; echo $CARPETA_USUARIO1
DATA_USUARIO1=$(du -sh /home/* | sort -r | sed q | awk '{print $1}') ; echo $DATA_USUARIO1
------------------------------
Kontrolloni Madhësinë në Bajte të Dosjes Superuser ose Dosje tjetër të Sistemit Operativ:
------------------------------
DATA_ROOT=$(du -sh /root | awk '{print $1}') ; echo $DATA_ROOT
DATA_CARPETA1=$(du -sh /var | awk '{print $1}') ; echo $DATA_CARPETA1
————————————————————–
Kontrolloni Dosjet e Krijuara të Përdoruesit (Emrat dhe Numrat):
————————————————————–
NOMBRES_CARPETAS=$(ls -l /home | sed '1 d' | awk '{print $9}') ; echo $NOMBRES_CARPETAS
NUMERO_CARPETAS=$(ls -l /home | sed '1 d' | awk '{print $9}') ; echo $NUMERO_CARPETAS | wc -w
---------------------
Kontrolloni përdoruesit me UID 0 dhe GID 0 (SUPERUSERS) të krijuar:
---------------------
SUPERUSUARIOS_UID=$(awk -F: '{if ($3==0) print $1}' /etc/passwd) ; echo $SUPERUSUARIOS_UID
SUPERUSUARIOS_GID=$(awk -F: '{if ($3==0) print $1}' /etc/passwd) ; echo $SUPERUSUARIOS_GID
--------------
Kontrolloni statusin e RAM dhe kujtesës Swap:
--------------
MEM_TOTAL=$(free -h | sed '1 d' | grep Mem: | awk '{print $2}') ; echo $MEM_TOTAL
MEM_USADA=$(free -h | sed '1 d' | grep Mem: | awk '{print $3}') ; echo $MEM_USADA
MEM_LIBRE=$(free -h | sed '1 d' | grep Mem: | awk '{print $4}') ; echo $MEM_LIBRE
MEM_COMPARTIDA=$(free -h | sed '1 d' | grep Mem: | awk '{print $5}') ; echo $MEM_COMPARTIDA
MEM_ALMACENADA=$(free -h | sed '1 d' | grep Mem: | awk '{print $6}') ; echo $MEM_ALMACENADA
MEM_CACHEADA=$(free -h | sed '1 d' | grep Mem: | awk '{print $7}') ; echo $MEM_CACHEADA
SWAP_TOTAL=$(free -h | sed '1 d' | grep Swap: | awk '{print $2}') ; echo $SWAP_TOTAL
SWAP_USADA=$(free -h | sed '1 d' | grep Swap: | awk '{print $3}') ; echo $SWAP_USADA
SWAP_LIBRE=$(free -h | sed '1 d' | grep Swap: | awk '{print $4}') ; echo $SWAP_LIBRE
------------------------
Kontrolloni gjendjen e ndarjeve / pikës së montimit të një disku SATA:
------------------------
PART1_TOTAL=$(df -h | sed '1 d' | grep /dev/sda5 | awk '{print $2}') ; echo $PART1_TOTAL
PART1_USADO=$(df -h | sed '1 d' | grep /dev/sda5 | awk '{print $3}') ; echo $PART1_USADO
PART1_DISPONIBLE=$(df -h | sed '1 d' | grep /dev/sda5 | awk '{print $4}') ; echo $PART1_DISPONIBLE
PART1_PORCENTAJE=$(df -h | sed '1 d' | grep /dev/sda5 | awk '{print $5}') ; echo $PART1_PORCENTAJE
PART1_PUNTOMONTAJE=$(df -h | sed '1 d' | grep /dev/sda5 | awk '{print $6}') ; echo $PART1_PUNTOMONTAJE
---------------------
Kontrolloni ngarkesën mesatare të sistemit (proceset në radhë):
---------------------
CARGA_1MIN=$(top -n 1 -b | grep "load average:" | awk '{print $10}' | sed 's/,//2') ; echo $CARGA_1MIN
CARGA_5MIN=$(top -n 1 -b | grep "load average:" | awk '{print $11}' | sed 's/,//2') ; echo $CARGA_5MIN
CARGA_15MIN=$(top -n 1 -b | grep "load average:" | awk '{print $12}' | sed 's/,//2') ; echo $CARGA_15MIN
CARGA_1MIN=$(uptime | awk '{print $8}' | sed 's/,//2') ; echo $CARGA_1MIN
CARGA_5MIN=$(uptime | awk '{print $9}' | sed 's/,//2') ; echo $CARGA_5MIN
CARGA_15MIN=$(uptime | awk '{print $10}' | sed 's/,//2') ; echo $CARGA_15MIN
——————————————————
Kontrolloni proceset e Zombies në sistemin operativ:
——————————————————
PROC_ZOMBIE=$(top -n 1 -b | grep "zombie" | awk '{print $10}') ; echo $PROC_ZOMBIE
---------------------
Kontrolloni kohën totale të punës (fillimi / ndezja):
---------------------
TIEMPO_ENCENDIDO=$(uptime | awk '{print $3,$4}' | cut -f1 -d,) ; echo $TIEMPO_ENCENDIDO
---------------
Kontrolloni parametrat e kartës video:
---------------
============
Prodhuesi:
FAB_TVIDEO=$(lspci -v | grep "VGA" | cut -d " " -f05) ; echo $FAB_TVIDEO
============
Kujtesa RAM:
MEM_TVIDEO=$(lspci -v -s `lspci | awk '/VGA/{print $1}'` | sed -n '/Memory.*, prefetchable/s/.*\[size=\([^]]\+\)M\]/\1/p') ; echo $MEM_TVIDEO
================
Moduli (Drejtuesi):
DRV_TVIDEO=$(lspci -nnk | grep -i vga -A3 | grep 'in use' | cut -d " " -f05) ; echo $DRV_TVIDEO
===============
Nxitimi 3D:
A3D_TVIDEO=$(glxinfo | grep "direct rendering: Yes" | awk '{print $3}') ; echo $A3D_TVIDEO
--------------
Kontrolloni parametrat e procesorit (CPU):
--------------
===========
Prodhuesi:
FABRICANTE_CPU=$(grep "vendor_id" /proc/cpuinfo | sed q | awk '{print $3}') ; echo $FABRICANTE_CPU
=======
Modeli:
MODELO_CPU=$(grep "model name" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $MODELO_CPU
=========
Sasia:
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}') ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; echo $TOTAL_CPU
================
Bërthamat për CPU:
NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}') ; echo $NUCLEO_CPU
==========================
Bërthamat totale për CPU:
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}') ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}') ; TOTAL_NUCLEO_CPU=$((`expr $TOTAL_CPU \* $NUCLEO_CPU`)) ; echo $TOTAL_NUCLEO_CPU
======================
Memorie cache e CPU:
CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $CACHE_CPU
Unë shpresoj që këta të vegjël "Këshilla" e bëjnë më të lehtë për ta që të kryejnë optimizime themelore, por të dobishme, të cilat zakonisht janë të rezervuara vetëm për ekspertët në Teknologji, Informatikë, Program i Lirë dhe GNU / Linux.
Ekranet e mostrës
KUJDES: Nëse ndonjë rresht komande nuk arrin të ekzekutojë ose shfaq vlerën e saktë, sigurohuni që të provoni manualisht secilën pjesë të komandës së shpejtë për të provuar dhe rregulluar vlerat ose sintaksën e disa ndryshoreve.
Shumë falemnderit.
Shumë e dobishme.
Shumë mirë faleminderit .
Një kënaqësi për të bashkëpunuar! Së shpejti do të përdor shumë më tepër në përdorimin e Shell Scripting në raste shumë praktike.
Inxhinier shumë i mirë! Shpresojmë që ka më shumë artikuj të Shkrimit të Shellit.
Komandat e paraqitura atje janë të shkëlqyera dhe shumë të dobishme.
Faleminderit për informacionin e vlefshëm; por në rastin tim disa komanda nuk japin rezultatin e pritur, për shembull komanda "kush" dhe "w" nuk tregojnë asgjë; Kjo më ka ndodhur që kur kam bërë një azhurnim të sistemit (përdor archlinux me menaxherin e ekranit "lxdm" dhe ambientin grafik "xfce 4.12"). Çdo ide çfarë ndodh (rezultati është i njëjtë edhe nëse përdor rrënjën e përdoruesit).
Ju faleminderit.
Ata do të dëshironin një Sistem ekspert të bërë me Shell Scripting që sipas kërkesës do të gjenerojë nxjerrjen e të gjithë parametrave të sistemit në formën e një Raporti.
Një shembull i asaj që mund të bëhet me Shell Scripting:
ScreenCast i Testit LPI-SB8 (INSTALIMI I POSTS LINUX - BICENTENARIO SHKRIMI 8.0.0)
(lpi_sb8_adecuación-audiovizual_2016.sh / 43Kb)
Shikoni shfaqjen në ekran: https://www.youtube.com/watch?v=cWpVQcbgCyY