El מעטפת Scripting, זה מתייחס ל ביצוע פקודות מורכבות על מסוף GNU / Linux (מסוף), זה מאוד שימושי לאוטומציה של פעילויות שגרתיות וחשובות במסגרת שלנו מערכת הפעלה GNU / Linux, מה שמאפשר לנו לייעל את שלנו משאבים וזמן, כלומר, עם הכלול כאן נחקור כיצד מהמסוף נוכל לבצע פקודות פקודה ידניות המאפשרות לנו לאחר מכן תזמן / אוטומט פעילויות על הצלת צוות שעות / עבודה של ביצוע ידני או פנים אל פנים, יישום ההזמנות האמורות בסקריפט של Bash Shell או תואם ומוסבר בצורה מעשית ופשוטה.
נכסה כמו בשנת פקודת פקודה אחת podemos לחלץ ולהציג ערכים / מידע ממערכת הפעלה / חומרה, שאותם נוכל ליישם בתוך a תסריט 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 / שער של מערכת ההפעלה:
——————————————————
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 (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
--------------
בדוק את מצב הזיכרון והחלפת זיכרון:
--------------
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
===============
האצה בתלת מימד:
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_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
================
ליבות לכל מעבד:
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.
מסכי דגימה
תִזכּוֹרֶת: אם שורת פקודה כלשהי אינה מצליחה לבצע או להציג את הערך הנכון, הקפד לבדוק ידנית כל קטע בשורת הפקודה כדי לנסות ולהתאים את הערכים או התחביר של משתנים מסוימים.
תודה רבה.
שימושי מאוד.
טוב מאוד תודה .
תענוג לשתף פעולה! בקרוב אעלה עוד הרבה על השימוש ב- Shell Scripting במקרים מעשיים מאוד.
מהנדס טוב מאוד! אני מקווה שיש עוד מאמרים של Shell Scripting.
הפקודות המוצגות שם מעולות ושימושיות מאוד.
תודה על המידע היקר; אך במקרה שלי פקודות מסוימות אינן נותנות את התוצאה הצפויה, למשל הפקודה "מי" ו- "w" אינן מציגות דבר; זה קרה לי מאז שעשיתי עדכון מערכת כלשהו (אני משתמש ב- archlinux עם מנהל המסך "lxdm" והסביבה הגרפית "xfce 4.12"). כל רעיון מה קורה (התוצאה זהה גם אם אני משתמש בשורש המשתמש).
תודה.
הם היו רוצים מערכת מומחית המיוצרת עם Shell Scripting שעל פי בקשה תייצר חילוץ של כל הפרמטרים של המערכת בצורה של דוח.
דוגמה למה שניתן לעשות עם Scripting Shell:
LPI-SB8 ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
(lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)
ראה Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY