Kako izvleči parametre iz terminala z uporabo skriptov lupine

El Shell Scripting, Nanaša se na izvrševanje zapletenih naročil o njem Terminal GNU / Linux (konzola), zelo koristno je avtomatizirati rutinske in pomembne dejavnosti znotraj našega Operacijski sistem GNU / Linux, kar nam omogoča optimizacijo našega Viri in čas, s tem, kar je tukaj vseeno, bomo raziskali, kako lahko na terminalu izvajamo ročne ukaze, ki nam nato omogočajo urnik / avtomatiziraj aktivnosti o varčevanju ekipe Ure / delo ročnega ali neposrednega izvrševanja, izvajanje navedenih naročil v skriptu Bash Shell ali združljivo in razloženo na praktičen in preprost način.

Izbira_007

Pokrivali bomo kot v en ukaz podemos izvleči in prikaži vrednosti / informacije iz operacijskega sistema / strojne opreme, ki ga lahko nato izvedemo v Scenarij Bash Shell za avtomatizacijo določene naloge. Osredotočanje na Najboljše prakse potrebno za odlično oblikovanje skripte na poti bolj učinkovit in praktičen.

--------------------
Pridobite ime prvega uporabnika, ustvarjenega v sistemu:
--------------------

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

———————————————————————
Pridobite pot / home prvega uporabnika, ustvarjenega v sistemu:
———————————————————————

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

-------------
Preverite datum trenutne opreme:
-------------

FECHA_ACTUAL=$(date +"%d %b %y") ; echo $FECHA_ACTUAL

------------
Preverite trenutni čas opreme:
------------

HORA_ACTUAL=$(date +"%H:%M") ; echo $HORA_ACTUAL

———————————————–
Preverite, ali ima gostitelj internetno povezavo:
———————————————–

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
-------------
Preverite vrsto operacijskega sistema:
-------------

SISTEMA_OPERATIVO=$(uname -o) ; echo $SISTEMA_OPERATIVO

----------------------
Preverite ime, različico in subverzijo operacijskega sistema:
----------------------
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

----------------
Preverite arhitekturo operacijskega sistema:
----------------

ARQUITECTURA=$(uname -m) ; echo $ARQUITECTURA

ARQUITECTURA=$(uname -m) ; if [[ "$ARQUITECTURA" = "x86" ]]; then ARQ_SISTEMA=32; else ARQ_SISTEMA=64; fi ; echo $ARQ_SISTEMA

------------------
Preverite različico jedra operacijskega sistema:
------------------

VERSION_KERNEL=$(uname -r) ; echo $VERSION_KERNEL

----------
Preverite ime gostitelja:
----------

NOMBRE_HOST=$(cat /etc/hostname) ; echo $NOMBRE_HOST
----------------------
Preverite notranji in zunanji IP (glavni internetni izhod):
----------------------

IP_INTERNA=$(hostname -I) ; echo $IP_INTERNA

IP_EXTERNA=$(curl -s ipecho.net/plain;echo) ; echo $IP_EXTERNA

------------------
Kontrolne vrednosti (IP / MAC) omrežnih vmesnikov:
------------------

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
——————————————————
Preverite proxy / prehod operacijskega sistema:
——————————————————

PROXY_GATEWAY=$(route -n | sed -n '3p' | awk '{print $2}') ; echo $PROXY_GATEWAY

———————————————–
Preverite domensko ime gostiteljskega omrežja:
———————————————–

DOMINIO=$(cat /etc/resolv.conf | sed '2 d' | grep search | sed -n '1p' | awk '{print $2}') ; echo $DOMINIO

---------------------
Preverite omrežni naslov (IP) gostiteljskega strežnika DNS:
---------------------

IP_SERVIDOR_DNS=$(cat /etc/resolv.conf | sed '1 d' | awk '{print $2}') ; echo $IP_SERVIDOR_DNS

-------------
Preverite uporabnike, povezane z gostiteljem:
-------------

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
———————————————————————————————————
Preverite uporabniško mapo z več podatki (število datotek / velikost v bajtih) v operacijskem sistemu:
----------------------------------

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

———————————————————————————————
Preverite velikost v bajtih mape super uporabnika ali druge mape operacijskega sistema:
———————————————————————————————

DATA_ROOT=$(du -sh /root | awk '{print $1}') ; echo $DATA_ROOT

DATA_CARPETA1=$(du -sh /var | awk '{print $1}') ; echo $DATA_CARPETA1

--------------------
Preverite ustvarjene uporabniške mape (imena in številke):
--------------------

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

---------------------
Preverite uporabnike z ustvarjenimi UID 0 IN GID 0 (SUPERUSERS):
---------------------

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

--------------
Preverite stanje RAM-a in zamenjaj pomnilnik:
--------------

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

------------------------
Preverite stanje particij / točko vpenjanja diska 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

---------------------
Preveri povprečno obremenitev sistema (procesi v čakalni vrsti):
---------------------

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

——————————————————
Preverite postopke zombija v operacijskem sistemu:
——————————————————

PROC_ZOMBIE=$(top -n 1 -b | grep "zombie" | awk '{print $10}') ; echo $PROC_ZOMBIE

---------------------
Preverite skupni delovni čas (zagon / vklop):
---------------------

TIEMPO_ENCENDIDO=$(uptime | awk '{print $3,$4}' | cut -f1 -d,) ; echo $TIEMPO_ENCENDIDO

---------------
Preverite parametre grafične kartice:
---------------

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

Ustvarjalec:

FAB_TVIDEO=$(lspci -v | grep "VGA" | cut -d " " -f05) ; echo $FAB_TVIDEO

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

RAM:

MEM_TVIDEO=$(lspci -v -s `lspci | awk '/VGA/{print $1}'` | sed -n '/Memory.*, prefetchable/s/.*\[size=\([^]]\+\)M\]/\1/p') ; echo $MEM_TVIDEO

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

Modul (gonilnik):

DRV_TVIDEO=$(lspci -nnk | grep -i vga -A3 | grep 'in use' | cut -d " " -f05) ; echo $DRV_TVIDEO

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

3D pospešek:

A3D_TVIDEO=$(glxinfo | grep "direct rendering: Yes" | awk '{print $3}') ; echo $A3D_TVIDEO

--------------
Preveri parametre procesorja (CPU):
--------------

===========

Ustvarjalec:

FABRICANTE_CPU=$(grep "vendor_id" /proc/cpuinfo | sed q | awk '{print $3}') ; echo $FABRICANTE_CPU

=======

Modelo:

MODELO_CPU=$(grep "model name" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $MODELO_CPU

=========

Količina:

NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}') ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; echo $TOTAL_CPU

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

Jedra na CPU:

NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}') ; echo $NUCLEO_CPU

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

Skupno število jeder na 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

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

Predpomnilnik CPU:

CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $CACHE_CPU

Upam, da ti majhni "Nasveti" jim olajšali izvedbo osnovnih, a uporabnih optimizacij, ki so praviloma rezervirane samo za strokovnjake Tehnologija, računalništvo, brezplačna programska oprema in GNU / Linux.

VZORČNI ZASLONI

jalbert: bash - Konsole_008

jalbert: bash - Konsole_009

OPOZORILO: Če katera od ukaznih vrstic ne uspe izvesti ali prikaže pravilne vrednosti, ne pozabite ročno preizkusiti vsakega odseka ukaznega poziva, da poskusite prilagoditi vrednosti ali sintakso nekaterih spremenljivk.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Eduardo je dejal

    Hvala lepa.

    Zelo uporabno.

  2.   HO2Gi je dejal

    Zelo dobro hvala.

  3.   ing. Jose Albert je dejal

    Z veseljem sodelujem! Kmalu se bom še bolj posvetil uporabi Shell Scripting v zelo praktičnih primerih.

  4.   CR0T0. je dejal

    Zelo dober inženir! Upajmo, da obstaja še več člankov o Shell Scripting.

  5.   Frančišek Tovar je dejal

    Tam prikazani ukazi so odlični in zelo uporabni.

  6.   uporabniški arhiv je dejal

    Hvala za dragocene informacije; vendar v mojem primeru nekateri ukazi ne dajo pričakovanega rezultata, na primer ukaza "kdo" in "w" ne kažeta ničesar; To se mi je zgodilo, odkar sem nekaj posodobil sistem (uporabljam Archlinux z upraviteljem zaslona "lxdm" in grafičnim okoljem "xfce 4.12"). Vsaka ideja, kaj se zgodi (rezultat je enak, tudi če uporabljam uporabniški koren).
    Hvala.

  7.   ing. Jose Albert je dejal

    Želeli bi strokovni sistem, narejen s Shell Scriptingom, ki bo na zahtevo ustvaril ekstrakcijo vseh parametrov sistema v obliki poročila.

    Primer, kaj lahko naredimo s skriptom Shell:

    LPI-SB8 Test ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)

    Glejte Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY