El Shell Scripting, Il se réfère au exécution d'ordres complexes sur le Terminal GNU / Linux (console), il est très utile d'automatiser les activités courantes et importantes au sein de notre Système d'exploitation GNU / Linux, ce qui nous permet d'optimiser notre Ressources et temps, c'est-à-dire qu'avec ce qui est contenu ici, nous explorerons comment à partir du terminal nous pouvons exécuter des commandes manuelles qui nous permettent ensuite planifier / automatiser activités sur une épargne d'équipe Heures / travail d'exécution manuelle ou en face-à-face, implémentation desdites commandes dans un Bash Shell Script ou compatible et expliqué de manière pratique et simple.
Nous couvrirons comme dans une seule commande de commande nous extraire et afficher les valeurs / informations du système d'exploitation / matériel, que nous pouvons ensuite implémenter dans un Script Bash Shell pour automatiser une tâche spécifique. Se concentrer sur le Les meilleures pratiques nécessaire pour obtenir une excellente conception d'un script de la manière plus efficace et pratique.
--------------------
Obtenez le nom du premier utilisateur créé dans le système:
--------------------
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
----------------------
Obtenez le chemin du / home du premier utilisateur créé sur le système:
----------------------
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
-------------
Vérifiez la date actuelle de l'équipement:
-------------
FECHA_ACTUAL=$(date +"%d %b %y") ; echo $FECHA_ACTUAL
------------
Vérifiez l'heure actuelle de l'équipement:
------------
HORA_ACTUAL=$(date +"%H:%M") ; echo $HORA_ACTUAL
----------------
Vérifiez si l'hôte dispose d'une connexion Internet:
----------------
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
-------------
Vérifiez le type de système d'exploitation:
-------------
SISTEMA_OPERATIVO=$(uname -o) ; echo $SISTEMA_OPERATIVO
----------------------
Vérifiez le nom, la version et la sous-version du système d'exploitation:
----------------------
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
----------------
Vérifiez l'architecture du système d'exploitation:
----------------
ARQUITECTURA=$(uname -m) ; echo $ARQUITECTURA
ARQUITECTURA=$(uname -m) ; if [[ "$ARQUITECTURA" = "x86" ]]; then ARQ_SISTEMA=32; else ARQ_SISTEMA=64; fi ; echo $ARQ_SISTEMA
------------------
Vérifiez la version du noyau du système d'exploitation:
------------------
VERSION_KERNEL=$(uname -r) ; echo $VERSION_KERNEL
----------
Vérifiez le nom d'hôte:
----------
NOMBRE_HOST=$(cat /etc/hostname) ; echo $NOMBRE_HOST
----------------------
Vérifiez l'IP interne et externe (sortie Internet principale):
----------------------
IP_INTERNA=$(hostname -I) ; echo $IP_INTERNA
IP_EXTERNA=$(curl -s ipecho.net/plain;echo) ; echo $IP_EXTERNA
------------------
Vérifiez les valeurs (IP / MAC) des interfaces réseau:
------------------
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
-----------------
Vérifiez le proxy / la passerelle du système d'exploitation:
-----------------
PROXY_GATEWAY=$(route -n | sed -n '3p' | awk '{print $2}') ; echo $PROXY_GATEWAY
----------------
Vérifiez le nom de domaine du réseau hôte:
----------------
DOMINIO=$(cat /etc/resolv.conf | sed '2 d' | grep search | sed -n '1p' | awk '{print $2}') ; echo $DOMINIO
—————————————————————-
Vérifiez l'adresse réseau (IP) du serveur DNS hôte:
—————————————————————-
IP_SERVIDOR_DNS=$(cat /etc/resolv.conf | sed '1 d' | awk '{print $2}') ; echo $IP_SERVIDOR_DNS
-------------
Vérifiez les utilisateurs connectés à l'hôte:
-------------
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
---------------------------------
Vérifiez le dossier utilisateur avec plus de données (nombre de fichiers / taille en octets) dans le système d'exploitation:
----------------------------------
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
------------------------------
Vérifiez la taille en octets du dossier du superutilisateur ou d'un autre dossier du système d'exploitation:
------------------------------
DATA_ROOT=$(du -sh /root | awk '{print $1}') ; echo $DATA_ROOT
DATA_CARPETA1=$(du -sh /var | awk '{print $1}') ; echo $DATA_CARPETA1
--------------------
Vérifiez les dossiers utilisateur créés (noms et numéros):
--------------------
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
—————————————————————-
Vérifiez les utilisateurs avec UID 0 ET GID 0 (SUPERUSERS) créés:
—————————————————————-
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
--------------
Vérifiez l'état de la RAM et de la mémoire d'échange:
--------------
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
------------------------
Vérifiez l'état des partitions / point de montage d'un disque 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
—————————————————————-
Vérifier la charge moyenne du système (processus en file d'attente):
—————————————————————-
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
-----------------
Vérifiez les processus Zombies dans le système d'exploitation:
-----------------
PROC_ZOMBIE=$(top -n 1 -b | grep "zombie" | awk '{print $10}') ; echo $PROC_ZOMBIE
—————————————————————-
Vérifiez le temps de travail total (démarrage / marche):
—————————————————————-
TIEMPO_ENCENDIDO=$(uptime | awk '{print $3,$4}' | cut -f1 -d,) ; echo $TIEMPO_ENCENDIDO
---------------
Vérifiez les paramètres de la carte vidéo:
---------------
============
Fabricant:
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 (pilote):
DRV_TVIDEO=$(lspci -nnk | grep -i vga -A3 | grep 'in use' | cut -d " " -f05) ; echo $DRV_TVIDEO
===============
Accélération 3D:
A3D_TVIDEO=$(glxinfo | grep "direct rendering: Yes" | awk '{print $3}') ; echo $A3D_TVIDEO
--------------
Vérifiez les paramètres du processeur (CPU):
--------------
===========
Fabricant:
FABRICANTE_CPU=$(grep "vendor_id" /proc/cpuinfo | sed q | awk '{print $3}') ; echo $FABRICANTE_CPU
=======
Modèle:
MODELO_CPU=$(grep "model name" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $MODELO_CPU
=========
Quantité:
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}') ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; echo $TOTAL_CPU
================
Cœurs par CPU:
NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}') ; echo $NUCLEO_CPU
==========================
Nombre total de cœurs par 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
======================
Mémoire cache du processeur:
CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $CACHE_CPU
J'espère que ces petits "Conseils" leur permettent d'effectuer facilement des optimisations basiques mais utiles, qui ne sont généralement réservées qu'aux experts en Technologie, informatique, logiciels libres et GNU / Linux.
ÉCHANTILLONS D'ÉCRANS
RAPPEL: Si une ligne de commande ne s'exécute pas ou affiche la valeur correcte, assurez-vous de tester manuellement chaque section de l'invite de commande pour essayer d'ajuster les valeurs ou la syntaxe de certaines variables.
Merci beaucoup.
Très utile.
Très bon merci .
Un plaisir de collaborer! Bientôt, j'en monterai beaucoup plus sur l'utilisation de Shell Scripting dans des cas très pratiques.
Très bon ingénieur! Espérons qu'il y ait plus d'articles sur les scripts Shell.
Les commandes qui y sont présentées sont excellentes et très utiles.
Merci pour les informations précieuses; mais dans mon cas, certaines commandes ne donnent pas le résultat attendu, par exemple la commande "who" et "w" ne montrent rien; Cela m'est arrivé depuis que j'ai fait une mise à jour du système (j'utilise archlinux avec le gestionnaire d'écran "lxdm" et l'environnement graphique "xfce 4.12"). Toute idée de ce qui se passe (le résultat est le même même si j'utilise l'utilisateur root).
Merci.
Ils souhaiteraient un système expert réalisé avec Shell Scripting qui, sur demande, générera l'extraction de tous les paramètres du système sous la forme d'un rapport.
Un exemple de ce qui peut être fait avec Shell Scripting:
Test ScreenCast LPI-SB8 (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
(lpi_sb8_adaptation-audiovisuel_2016.sh / 43Ko)
Voir Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY