El Шел скриптирање, Тоа се однесува на извршување на комплексни налози за него Терминал на GNU / Linux (конзола), многу е корисно да се автоматизираат рутински и важни активности во рамките на нашите Оперативен систем GNU / Linux, што ни овозможува да ги оптимизираме нашите Извори и време, тоа е, со она што е содржано тука, ќе истражиме како од терминалот можеме да извршуваме рачни команди што потоа ни овозможуваат распоред / автоматизирање активности за заштеда на тим Часови / труд за рачно или лице-в-лице извршување, спроведување на наведените наредби во скрипта „Баш Шел“ или компатибилно и објаснето на практичен и едноставен начин.
Ние ќе покриеме како во единствена командна команда podemos извлечете и прикажете вредности / информации од оперативниот систем / хардверот, што потоа можеме да го спроведеме во рамките на Скрипта Баш Шел да се автоматизира одредена задача. Фокусирање на Најдобри практики потребно е да се добие одличен дизајн на Скрипт на начин поефикасно и попрактично.
————————————————————
Добијте го името на првиот корисник креиран во системот:
————————————————————
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
---------------------------------
Проверете ја папката на корисникот со повеќе податоци (# од датотеки / големина во бајти) во оперативниот систем:
----------------------------------
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
------------------------------
Проверете ја големината во бајт на папката 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 (супер-корисници):
---------------------
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
——————————————————
Проверете ги процесите на зомби во оперативниот систем:
——————————————————
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
===============
3Д забрзување:
A3D_TVIDEO=$(glxinfo | grep "direct rendering: Yes" | awk '{print $3}') ; echo $A3D_TVIDEO
--------------
Проверете ги параметрите на процесорот:
--------------
===========
Производител:
FABRICANTE_CPU=$(grep "vendor_id" /proc/cpuinfo | sed q | awk '{print $3}') ; echo $FABRICANTE_CPU
=======
Модел:
MODELO_CPU=$(grep "model name" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $MODELO_CPU
=========
Cantidad:
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}') ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; echo $TOTAL_CPU
================
Јадра по процесорот:
NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}') ; echo $NUCLEO_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
======================
Кеш меморија на процесорот:
CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}') ; echo $CACHE_CPU
Се надевам дека овие најмалите „Совети“ олеснете им да извршуваат основни, но корисни оптимизации, кои генерално се резервирани само за луѓе кои се експерти во Технологија, компјутер, слободен софтвер и GNU / Linux.
ЕКРАНИ НА ПРИМЕР
Потсетување: Ако некоја командна линија не успее да ја изврши или ја прикаже точната вредност, не заборавајте рачно да го тестирате секој дел од командната линија за да ги пробате и прилагодите вредностите или синтаксата на некои променливи.
7 коментари, оставете ги вашите
Ви благодарам многу.
Многу корисно.
Многу добро благодарам
Задоволство е да соработуваме! Наскоро ќе привлечам многу повеќе на употребата на Шел Скрипти во многу практични случаи.
Многу добар инженер! Се надеваме дека има повеќе написи за Скрипти за Шел.
Командите прикажани таму се одлични и многу корисни.
Ви благодариме за вредните информации; но во мојот случај некои команди не го даваат очекуваниот резултат, на пример командата „кој“ и „w“ не покажуваат ништо; ова ми се случи откако направив извесно ажурирање на системот (користам archlinux со менаџерот на екранот "lxdm" и графичката околина "xfce 4.12"). Секоја идеја што се случува (резултатот е ист дури и ако користам кориснички корен).
Ви благодариме.
Тие би сакале експертски систем направен со Шел Скриптинг кој по барање ќе генерира екстракција на сите параметри на системот во форма на Извештај.
Пример за тоа што може да се направи со Шел Скриптирање:
LPI-SB8 Test ScreenCast (ПОСТАВУВАЕ ПОСТ LINUX - БИЦЕНТЕНАРИО НА СКРИПТ 8.0.0)
(lpi_sb8_adecuación-аудиовизуелен_2016.sh / 43Kb)
Погледнете го емитувањето на екранот: https://www.youtube.com/watch?v=cWpVQcbgCyY