El Shell ScriptingΑναφέρεται στο εκτέλεση σύνθετων παραγγελιών επί Τερματικό GNU / Linux (Κονσόλα), είναι πολύ χρήσιμο να αυτοματοποιούμε ρουτίνες και σημαντικές δραστηριότητες μέσα μας Λειτουργικό σύστημα GNU / Linux, που μας επιτρέπει να βελτιστοποιήσουμε το δικό μας Πόροι και χρόνος, Δηλαδή, με όσα περιέχονται εδώ θα διερευνήσουμε πώς από το τερματικό μπορούμε να εκτελέσουμε χειροκίνητες εντολές που μας επιτρέπουν πρόγραμμα / αυτοματοποίηση δραστηριότητες για εξοικονόμηση ομάδας Ώρες / Εργασία χειροκίνητης ή προσωπικής εκτέλεσης, υλοποίησης των εν λόγω παραγγελιών σε Bash Shell Script ή συμβατή και εξηγείται με πρακτικό και απλό τρόπο.
Θα καλύψουμε όπως στο μία εντολή εντολής μπορώ εξαγάγετε και εμφανίστε τιμές / πληροφορίες από το Λειτουργικό Σύστημα / Υλικό, το οποίο μπορούμε στη συνέχεια να εφαρμόσουμε μέσα σε ένα Σενάριο Bash Shell να αυτοματοποιήσει μια συγκεκριμένη εργασία. Εστίαση στο Βέλτιστες πρακτικές απαραίτητο για να αποκτήσετε έναν εξαιρετικό σχεδιασμό ενός σεναρίου με τον τρόπο πιο αποτελεσματική και πρακτική.
--------------------
Λάβετε το όνομα του πρώτου χρήστη που δημιουργήθηκε στο σύστημα:
--------------------
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
----------------------
Αποκτήστε τη / αρχική διαδρομή του πρώτου χρήστη που δημιουργήθηκε στο σύστημα:
----------------------
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
-------------
Ελέγξτε την τρέχουσα ημερομηνία εξοπλισμού:
-------------
FECHA_ACTUAL=$(date +"%d %b %y") ; echo $FECHA_ACTUAL
------------
Ελέγξτε τον τρέχοντα χρόνο εξοπλισμού:
------------
HORA_ACTUAL=$(date +"%H:%M") ; echo $HORA_ACTUAL
————————————————–
Ελέγξτε εάν ο κεντρικός υπολογιστής διαθέτει σύνδεση στο Διαδίκτυο:
————————————————–
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
-------------
Ελέγξτε τον τύπο του λειτουργικού συστήματος:
-------------
SISTEMA_OPERATIVO=$(uname -o) ; echo $SISTEMA_OPERATIVO
----------------------
Ελέγξτε το όνομα, την έκδοση και την ανατροπή του λειτουργικού συστήματος:
----------------------
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
----------------
Ελέγξτε την αρχιτεκτονική του λειτουργικού συστήματος:
----------------
ARQUITECTURA=$(uname -m) ; echo $ARQUITECTURA
ARQUITECTURA=$(uname -m) ; if [[ "$ARQUITECTURA" = "x86" ]]; then ARQ_SISTEMA=32; else ARQ_SISTEMA=64; fi ; echo $ARQ_SISTEMA
------------------
Ελέγξτε την έκδοση του πυρήνα του λειτουργικού συστήματος:
------------------
VERSION_KERNEL=$(uname -r) ; echo $VERSION_KERNEL
----------
Ελέγξτε το όνομα κεντρικού υπολογιστή:
----------
NOMBRE_HOST=$(cat /etc/hostname) ; echo $NOMBRE_HOST
----------------------
Έλεγχος εσωτερικής και εξωτερικής IP (Κύρια έξοδος Διαδικτύου):
----------------------
IP_INTERNA=$(hostname -I) ; echo $IP_INTERNA
IP_EXTERNA=$(curl -s ipecho.net/plain;echo) ; echo $IP_EXTERNA
------------------
Έλεγχος τιμών (IP / MAC) διασυνδέσεων δικτύου:
------------------
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
-----------------
Ελέγξτε τον διακομιστή μεσολάβησης / πύλη του λειτουργικού συστήματος:
-----------------
PROXY_GATEWAY=$(route -n | sed -n '3p' | awk '{print $2}') ; echo $PROXY_GATEWAY
————————————————–
Ελέγξτε το όνομα τομέα του κεντρικού δικτύου:
————————————————–
DOMINIO=$(cat /etc/resolv.conf | sed '2 d' | grep search | sed -n '1p' | awk '{print $2}') ; echo $DOMINIO
---------------------
Ελέγξτε τη διεύθυνση δικτύου (IP) του κεντρικού διακομιστή DNS:
---------------------
IP_SERVIDOR_DNS=$(cat /etc/resolv.conf | sed '1 d' | awk '{print $2}') ; echo $IP_SERVIDOR_DNS
-------------
Ελέγξτε τους χρήστες που είναι συνδεδεμένοι στον κεντρικό υπολογιστή:
-------------
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
---------------------------------
Ελέγξτε το φάκελο χρήστη με περισσότερα δεδομένα (# αρχείων / μεγέθους σε bytes) στο λειτουργικό σύστημα:
----------------------------------
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
------------------------------
Έλεγχος μεγέθους σε byte του φακέλου Superuser ή άλλου φακέλου του λειτουργικού συστήματος:
------------------------------
DATA_ROOT=$(du -sh /root | awk '{print $1}') ; echo $DATA_ROOT
DATA_CARPETA1=$(du -sh /var | awk '{print $1}') ; echo $DATA_CARPETA1
--------------------
Έλεγχος δημιουργημένων φακέλων χρήστη (ονόματα και αριθμοί):
--------------------
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
---------------------
Ελέγξτε τους χρήστες με UID 0 ΚΑΙ 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
--------------
Ελέγξτε την κατάσταση της μνήμης RAM και της ανταλλαγής μνήμης:
--------------
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
------------------------
Ελέγξτε την κατάσταση των διαμερισμάτων / το σημείο προσάρτησης ενός δίσκου 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
---------------------
Έλεγχος μέσου φορτίου συστήματος (Διαδικασίες σε ουρά):
---------------------
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
-----------------
Ελέγξτε τις διαδικασίες Zombies στο λειτουργικό σύστημα:
-----------------
PROC_ZOMBIE=$(top -n 1 -b | grep "zombie" | awk '{print $10}') ; echo $PROC_ZOMBIE
---------------------
Έλεγχος συνολικού χρόνου εργασίας (Έναρξη / Ενεργοποίηση):
---------------------
TIEMPO_ENCENDIDO=$(uptime | awk '{print $3,$4}' | cut -f1 -d,) ; echo $TIEMPO_ENCENDIDO
---------------
Ελέγξτε τις παραμέτρους της κάρτας βίντεο:
---------------
============
Κατασκευαστής:
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
================
Ενότητα (Πρόγραμμα οδήγησης):
DRV_TVIDEO=$(lspci -nnk | grep -i vga -A3 | grep 'in use' | cut -d " " -f05) ; echo $DRV_TVIDEO
===============
3D επιτάχυνση:
A3D_TVIDEO=$(glxinfo | grep "direct rendering: Yes" | awk '{print $3}') ; echo $A3D_TVIDEO
--------------
Έλεγχος παραμέτρων επεξεργαστή (CPU):
--------------
===========
Κατασκευαστής:
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
=========
ποσότητα:
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}') ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; echo $TOTAL_CPU
================
Πυρήνες ανά CPU:
NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}') ; echo $NUCLEO_CPU
==========================
Σύνολο πυρήνων ανά 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:
CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $CACHE_CPU
Ελπίζω αυτά τα μικρά "Συμβουλές" διευκολύνετέ τους να πραγματοποιήσουν βασικές αλλά χρήσιμες βελτιστοποιήσεις, οι οποίες γενικά προορίζονται μόνο για άτομα που είναι ειδικοί Τεχνολογία, Πληροφορική, Ελεύθερο Λογισμικό και GNU / Linux.
ΟΘΟΝΕΣ ΔΕΙΓΜΑΤΟΣ
ΥΠΕΝΘΥΜΙΣΗ: Εάν κάποια γραμμή εντολών αποτύχει να εκτελέσει ή να εμφανίσει τη σωστή τιμή, βεβαιωθείτε ότι έχετε δοκιμάσει χειροκίνητα κάθε ενότητα της γραμμής εντολών για να δοκιμάσετε και να προσαρμόσετε τις τιμές ή τη σύνταξη ορισμένων μεταβλητών.
Σας ευχαριστώ πολύ.
Πολύ χρήσιμο.
Πολύ καλά, ευχαριστώ.
Μια χαρά για συνεργασία! Σύντομα θα προσθέσω πολλά περισσότερα στη χρήση του Shell Scripting σε πολύ πρακτικές περιπτώσεις.
Πολύ καλός μηχανικός! Ας ελπίσουμε ότι υπάρχουν περισσότερα άρθρα Shell Scripting.
Οι εντολές που εμφανίζονται είναι εξαιρετικές και πολύ χρήσιμες.
Ευχαριστώ για τις πολύτιμες πληροφορίες. αλλά στην περίπτωσή μου ορισμένες εντολές δεν δίνουν το αναμενόμενο αποτέλεσμα, για παράδειγμα η εντολή "Who" και "w" δεν εμφανίζουν τίποτα. αυτό συνέβη σε μένα από τότε που έκανα κάποια ενημέρωση συστήματος (χρησιμοποιώ το archlinux με τον διαχειριστή οθόνης "lxdm" και το περιβάλλον γραφικών "xfce 4.12"). Οποιαδήποτε ιδέα τι συμβαίνει (το αποτέλεσμα είναι το ίδιο ακόμα και αν χρησιμοποιώ root user).
Σας ευχαριστώ.
Θα ήθελαν ένα εξειδικευμένο Σύστημα φτιαγμένο με Shell Scripting, το οποίο, κατόπιν αιτήματος, θα δημιουργήσει την εξαγωγή όλων των παραμέτρων του συστήματος με τη μορφή Αναφοράς.
Ένα παράδειγμα του τι μπορεί να γίνει με το Shell Scripting:
LPI-SB8 Test ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
(lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)
Δείτε το Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY