כיצד לחלץ פרמטרים מהטרמינל החלת Shell Scripting

El מעטפת Scripting, זה מתייחס ל ביצוע פקודות מורכבות על מסוף GNU / Linux (מסוף), זה מאוד שימושי לאוטומציה של פעילויות שגרתיות וחשובות במסגרת שלנו מערכת הפעלה GNU / Linux, מה שמאפשר לנו לייעל את שלנו משאבים וזמן, כלומר, עם הכלול כאן נחקור כיצד מהמסוף נוכל לבצע פקודות פקודה ידניות המאפשרות לנו לאחר מכן תזמן / אוטומט פעילויות על הצלת צוות שעות / עבודה של ביצוע ידני או פנים אל פנים, יישום ההזמנות האמורות בסקריפט של Bash Shell או תואם ומוסבר בצורה מעשית ופשוטה.

בחירה_007נכסה כמו בשנת פקודת פקודה אחת 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.

מסכי דגימה

jalbert: bash - Konsole_008

jalbert: bash - Konsole_009

תִזכּוֹרֶת: אם שורת פקודה כלשהי אינה מצליחה לבצע או להציג את הערך הנכון, הקפד לבדוק ידנית כל קטע בשורת הפקודה כדי לנסות ולהתאים את הערכים או התחביר של משתנים מסוימים.


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

7 תגובות, השאר את שלך

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   אדוארדו דיג'ו

    תודה רבה.

    שימושי מאוד.

  2.   HO2Gi דיג'ו

    טוב מאוד תודה .

  3.   אינג 'חוסה אלברט דיג'ו

    תענוג לשתף פעולה! בקרוב אעלה עוד הרבה על השימוש ב- Shell Scripting במקרים מעשיים מאוד.

  4.   cr0t0 דיג'ו

    מהנדס טוב מאוד! אני מקווה שיש עוד מאמרים של Shell Scripting.

  5.   פרנסיסקו טובאר דיג'ו

    הפקודות המוצגות שם מעולות ושימושיות מאוד.

  6.   userarch דיג'ו

    תודה על המידע היקר; אך במקרה שלי פקודות מסוימות אינן נותנות את התוצאה הצפויה, למשל הפקודה "מי" ו- "w" אינן מציגות דבר; זה קרה לי מאז שעשיתי עדכון מערכת כלשהו (אני משתמש ב- archlinux עם מנהל המסך "lxdm" והסביבה הגרפית "xfce 4.12"). כל רעיון מה קורה (התוצאה זהה גם אם אני משתמש בשורש המשתמש).
    תודה.

  7.   אינג 'חוסה אלברט דיג'ו

    הם היו רוצים מערכת מומחית המיוצרת עם Shell Scripting שעל פי בקשה תייצר חילוץ של כל הפרמטרים של המערכת בצורה של דוח.

    דוגמה למה שניתן לעשות עם Scripting Shell:

    LPI-SB8 ScreenCast (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adecuación-audiovisual_2016.sh / 43Kb)

    ראה Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY