El Shell-skripting, Det refererer til gjennomføring av komplekse ordrer om ham GNU / Linux-terminal (konsoll), det er veldig nyttig å automatisere rutinemessige og viktige aktiviteter i vårt GNU / Linux-operativsystem, som lar oss optimalisere Ressurser og tid, det vil si med det som finnes her, vil vi utforske hvordan vi fra terminalen kan utføre manuelle kommandoer som deretter tillater oss planlegge / automatisere aktiviteter om lagsparing Timer / arbeid av manuell eller ansikt-til-ansikt-utførelse, implementering av nevnte ordrer i et Bash Shell Script eller kompatibelt og forklart på en praktisk og enkel måte.
Vi vil dekke som i en enkelt kommandokommando vi trekke ut og vise verdier / informasjon fra operativsystem / maskinvare, som vi deretter kan implementere innenfor en Bash Shell-skript for å automatisere en bestemt oppgave. Fokuserer på Beste praksis nødvendig for å oppnå en utmerket design av et skript i veien mer effektiv og praktisk.
--------------------
Få navnet til den første brukeren som ble opprettet i systemet:
--------------------
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
----------------------
Få / hjemveien til den første brukeren som ble opprettet på systemet:
----------------------
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
-------------
Sjekk nåværende utstyrsdato:
-------------
FECHA_ACTUAL=$(date +"%d %b %y") ; echo $FECHA_ACTUAL
------------
Kontroller gjeldende utstyrstid:
------------
HORA_ACTUAL=$(date +"%H:%M") ; echo $HORA_ACTUAL
————————————————–
Sjekk om verten har en internettforbindelse:
————————————————–
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
-------------
Sjekk typen operativsystem:
-------------
SISTEMA_OPERATIVO=$(uname -o) ; echo $SISTEMA_OPERATIVO
----------------------
Kontroller navnet, versjonen og subversjonen av operativsystemet:
----------------------
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
----------------
Sjekk arkitekturen til operativsystemet:
----------------
ARQUITECTURA=$(uname -m) ; echo $ARQUITECTURA
ARQUITECTURA=$(uname -m) ; if [[ "$ARQUITECTURA" = "x86" ]]; then ARQ_SISTEMA=32; else ARQ_SISTEMA=64; fi ; echo $ARQ_SISTEMA
------------------
Sjekk kjerneversjonen av operativsystemet:
------------------
VERSION_KERNEL=$(uname -r) ; echo $VERSION_KERNEL
----------
Sjekk vertsnavn:
----------
NOMBRE_HOST=$(cat /etc/hostname) ; echo $NOMBRE_HOST
----------------------
Kontroller intern og ekstern IP (hovedinternettutgang):
----------------------
IP_INTERNA=$(hostname -I) ; echo $IP_INTERNA
IP_EXTERNA=$(curl -s ipecho.net/plain;echo) ; echo $IP_EXTERNA
------------------
Kontrollverdier (IP / MAC) for nettverksgrensesnitt:
------------------
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
-----------------
Sjekk proxyen / gatewayen til operativsystemet:
-----------------
PROXY_GATEWAY=$(route -n | sed -n '3p' | awk '{print $2}') ; echo $PROXY_GATEWAY
————————————————–
Sjekk vertsnettverket domenenavn:
————————————————–
DOMINIO=$(cat /etc/resolv.conf | sed '2 d' | grep search | sed -n '1p' | awk '{print $2}') ; echo $DOMINIO
---------------------
Sjekk nettverksadressen (IP) til verts-DNS-serveren:
---------------------
IP_SERVIDOR_DNS=$(cat /etc/resolv.conf | sed '1 d' | awk '{print $2}') ; echo $IP_SERVIDOR_DNS
-------------
Sjekk brukere som er koblet til verten:
-------------
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
---------------------------------
Kontroller brukermappen med flere data (antall filer / størrelse i byte) i operativsystemet:
----------------------------------
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
------------------------------
Sjekk størrelse i bytter til superbrukermappe eller annen mappe i operativsystemet:
------------------------------
DATA_ROOT=$(du -sh /root | awk '{print $1}') ; echo $DATA_ROOT
DATA_CARPETA1=$(du -sh /var | awk '{print $1}') ; echo $DATA_CARPETA1
--------------------
Sjekk opprettede brukermapper (navn og tall):
--------------------
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
---------------------
Sjekk brukere med UID 0 OG GID 0 (SUPERUSERS) opprettet:
---------------------
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
--------------
Sjekk status for RAM og bytt minne:
--------------
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
------------------------
Kontroller status for partisjoner / monteringspunkt for en SATA-disk:
------------------------
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
---------------------
Sjekk gjennomsnittlig systembelastning (prosesser i kø):
---------------------
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
-----------------
Sjekk Zombies-prosesser i operativsystemet:
-----------------
PROC_ZOMBIE=$(top -n 1 -b | grep "zombie" | awk '{print $10}') ; echo $PROC_ZOMBIE
---------------------
Sjekk total arbeidstid (start / på):
---------------------
TIEMPO_ENCENDIDO=$(uptime | awk '{print $3,$4}' | cut -f1 -d,) ; echo $TIEMPO_ENCENDIDO
---------------
Sjekk parametere for skjermkort:
---------------
============
Produsent:
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 (driver):
DRV_TVIDEO=$(lspci -nnk | grep -i vga -A3 | grep 'in use' | cut -d " " -f05) ; echo $DRV_TVIDEO
===============
3D-akselerasjon:
A3D_TVIDEO=$(glxinfo | grep "direct rendering: Yes" | awk '{print $3}') ; echo $A3D_TVIDEO
--------------
Kontroller prosessor (CPU) parametere:
--------------
===========
Produsent:
FABRICANTE_CPU=$(grep "vendor_id" /proc/cpuinfo | sed q | awk '{print $3}') ; echo $FABRICANTE_CPU
=======
modell:
MODELO_CPU=$(grep "model name" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $MODELO_CPU
=========
Antall:
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}') ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; echo $TOTAL_CPU
================
Kjerner per CPU:
NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}') ; echo $NUCLEO_CPU
==========================
Totalt antall kjerner per prosessorer:
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-hurtigminne:
CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $CACHE_CPU
Jeg håper disse små "Tips" gjør det enkelt for dem å utføre grunnleggende, men nyttige optimaliseringer, som vanligvis bare er reservert for folk som er eksperter på Teknologi, databehandling, fri programvare og GNU / Linux.
PRØVESKJERMER
PÅMINNELSE: Hvis en kommandolinje ikke utfører eller viser riktig verdi, må du teste hver del av ledeteksten manuelt for å prøve å justere verdiene eller syntaksen til noen variabler.
Tusen takk.
Veldig nyttig.
Veldig bra takk .
En glede å samarbeide! Snart vil jeg montere mange flere på bruken av Shell Scripting i veldig praktiske tilfeller.
Veldig bra ingeniør! Forhåpentligvis er det flere Shell Scripting-artikler.
Kommandoene som vises der, er gode og veldig nyttige.
Takk for verdifull informasjon; men i mitt tilfelle gir noen kommandoer ikke det forventede resultatet, for eksempel kommandoen "hvem" og "w" viser ikke noe; Dette har skjedd med meg siden jeg gjorde noen systemoppdateringer (jeg bruker archlinux med skjermbehandling "lxdm" og grafisk miljø "xfce 4.12"). Enhver ide om hva som skjer (resultatet er det samme selv om jeg bruker brukerrot).
Takk.
De ønsker et ekspertsystem laget med Shell Scripting som på forespørsel vil generere utvinning av alle parametrene i systemet i form av en rapport.
Et eksempel på hva som kan gjøres med Shell Scripting:
LPI-SB8 Test ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
(lpi_sb8_adecuación-audiovisuell_2016.sh / 43Kb)
Se Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY