Parameters extraheren uit de terminal door Shell Scripting toe te passen

El Shell-scripts, Het verwijst naar de uitvoering van complexe orders op GNU / Linux Terminal (console), het is erg handig om routinematige en belangrijke activiteiten binnen ons te automatiseren GNU / Linux-besturingssysteem, waarmee we onze Middelen en tijd, dat wil zeggen, met wat hier staat, zullen we onderzoeken hoe we vanaf de terminal handmatige opdrachten kunnen uitvoeren die ons vervolgens toestaan plannen / automatiseren activiteiten over een teamsparen Uren / arbeid van handmatige of face-to-face uitvoering, het implementeren van genoemde orders in een Bash Shell Script of compatibel en uitgelegd op een praktische en eenvoudige manier.

Selección_007

We zullen behandelen zoals in een enkel commando commando we waarden / informatie uit het besturingssysteem / hardware extraheren en weergeven, die we vervolgens kunnen implementeren binnen een Bash Shell-script om een ​​specifieke taak te automatiseren. Focussen op de Beste praktijken nodig om in de weg een uitstekend ontwerp van een script te krijgen efficiënter en praktischer.

--------------------
Haal de naam op van de eerste gebruiker die in het systeem is gemaakt:
--------------------

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

----------------------
Haal het pad op van de / home van de eerste gebruiker die op het systeem is gemaakt:
----------------------

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

-------------
Controleer de huidige apparatuurdatum:
-------------

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

------------
Controleer de huidige apparatuurtijd:
------------

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

----------------
Controleer of de host een internetverbinding heeft:
----------------

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
-------------
Controleer het type besturingssysteem:
-------------

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

----------------------
Controleer de naam, versie en subversie van het besturingssysteem:
----------------------
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

----------------
Controleer de architectuur van het besturingssysteem:
----------------

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

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

------------------
Controleer de kernelversie van het besturingssysteem:
------------------

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

----------
Controleer hostnaam:
----------

NOMBRE_HOST=$(cat /etc/hostname) ; echo $NOMBRE_HOST
----------------------
Controleer interne en externe IP (hoofdinternetuitgang):
----------------------

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

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

------------------
Controleer de waarden (IP / MAC) van netwerkinterfaces:
------------------

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
-----------------
Controleer de proxy / gateway van het besturingssysteem:
-----------------

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

----------------
Controleer de domeinnaam van het hostnetwerk:
----------------

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

---------------------
Controleer het netwerkadres (IP) van de host-DNS-server:
---------------------

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

-------------
Controleer gebruikers die zijn verbonden met de host:
-------------

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
---------------------------------
Controleer de gebruikersmap met meer gegevens (aantal bestanden / grootte in bytes) in het besturingssysteem:
----------------------------------

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

------------------------------
Controleer de grootte in bytes van de Superuser-map of een andere map van het besturingssysteem:
------------------------------

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

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

--------------------
Controleer aangemaakte gebruikersmappen (namen en nummers):
--------------------

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

---------------------
Controleer gebruikers met UID 0 EN GID 0 (SUPERUSERS) aangemaakt:
---------------------

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

--------------
Controleer de status van RAM en wissel geheugen:
--------------

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

------------------------
Controleer de status van partities / koppelpunt van een SATA-schijf:
------------------------

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

---------------------
Controleer de gemiddelde systeembelasting (processen in de wachtrij):
---------------------

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

-----------------
Controleer Zombies-processen in het besturingssysteem:
-----------------

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

---------------------
Controleer de totale werktijd (start / aan):
---------------------

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

---------------
Controleer de videokaartparameters:
---------------

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

fabrikant:

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

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

Module (stuurprogramma):

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

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

3D-versnelling:

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

--------------
Controleer de processor (CPU) -parameters:
--------------

===========

fabrikant:

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

=======

model:

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

=========

Hoeveelheid:

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

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

Kernen per CPU:

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

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

Totaal aantal kernen per 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

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

CPU-cachegeheugen:

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

Ik hoop dat deze kleintjes "Tips" maken het gemakkelijk voor hen om eenvoudige maar nuttige optimalisaties uit te voeren, die over het algemeen alleen zijn voorbehouden aan mensen die experts zijn in Technologie, computers, gratis software en GNU / Linux.

VOORBEELDSCHERMEN

jalbert: bash - Konsole_008

jalbert: bash - Konsole_009

HERINNERING: Als een opdrachtregel niet wordt uitgevoerd of de juiste waarde weergeeft, moet u elke sectie van de opdrachtprompt handmatig testen om te proberen de waarden of syntaxis van sommige variabelen aan te passen.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Eduardo zei

    Heel hartelijk bedankt.

    Erg nuttig.

  2.   HO2Gi zei

    Zeer goed, dank u.

  3.   José Albert zei

    Een plezier om samen te werken! Binnenkort zal ik er nog veel meer over het gebruik van Shell Scripting in zeer praktische gevallen bespreken.

  4.   cr0t0 zei

    Zeer goede ingenieur! Hopelijk zijn er meer Shell Scripting-artikelen.

  5.   Francis Tovar zei

    De daar getoonde commando's zijn uitstekend en erg handig.

  6.   gebruikersarch zei

    Bedankt voor de waardevolle informatie; maar in mijn geval geven sommige commando's niet het verwachte resultaat, bijvoorbeeld het commando "wie" en "w" laten niets zien; Dit is mij overkomen sinds ik een systeemupdate heb gemaakt (ik gebruik archlinux met schermmanager "lxdm" en grafische omgeving "xfce 4.12"). Enig idee wat er gebeurt (het resultaat is hetzelfde, zelfs als ik gebruikersroot gebruik).
    Dank u.

  7.   José Albert zei

    Ze willen graag een expert systeem gemaakt met Shell Scripting dat op verzoek de extractie van alle parameters van het systeem genereert in de vorm van een rapport.

    Een voorbeeld van wat u kunt doen met Shell Scripting:

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

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