如何使用Shell腳本實現SysAdmin終端

El Shell Scripting,是指 執行複雜的訂單 關於他 GNU / Linux終端(控制台), 自動化我們日常工作和重要活動非常有用 GNU / Linux操作系統, 這使我們可以優化我們的 資源和時間.

Selection_007

因此,它在終端上的使用使我們能夠手動或通過腳本自動執行複雜的命令命令,或者作為操作系統中自動加載的文件或計劃任務中的編程例程來執行。 GNU / Linux的。 而對於 中級用戶,高級或SysAdmin el 時間表(自動) 主機(PC /服務器)上的任務,警報和/或通知以保存 工時/人工 無論是手動執行還是親自執行,對於高級專業人員來說,這都是基本和必不可少的工作。

接下來,我們將展示如何 數據(值/參數) 先前由命令存儲在變量中 Bash Shell 或兼容,它可以以實用且簡單的方式顯示在您的GNU / linux操作系統的終端中。 除了調整終端提示。

第一步:編輯用戶的.bashrc

使用您選擇的編輯器(vi,nano等)編輯 .bashrc文件 必須位於同一用戶之家中的用戶數量,例如: “ /主頁/ my_user”。

插入以下每一行的內容以及在執行用戶終端時您認為方便顯示給用戶的所有其他內容:

sleep 3

clear

########################### PARÁMETROS DE MONITOREO ###########################

NOMBRE_SISTEMA=$(cat /etc/os-release | grep NAME | grep -v "VERSION" | sed -n '2p' | cut -f2 -d\")
VERSION_SISTEMA=$(cat /etc/os-release | grep VERSION= | sed -n '1p' | sed 's/VERSION=//' | sed 's/"//g')

FABRICANTE_CPU=$(grep "vendor_id" /proc/cpuinfo | sed q | awk '{print $3}')
MODELO_CPU=$(grep "model name" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}')
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}' | echo `expr $NUM_CPU + 1`)
NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}')
CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}')

clear

printf %80s |tr " " "="
echo ""
echo "      ADVERTENCIA - USTED HA INICIADO SESIÓN EN EL EQUIPO SERVIDOR DE LA      "
echo "                             EMPRESA INSTITUCIÓN XYZ                                "
echo "       RECUERDE TENER EXTREMO CUIDADO CON CUALQUIER CAMBIO A REALIZAR        "
printf %80s |tr " " "="
echo ""
printf %80s |tr " " "="
echo ""
echo "                         ESTE EQUIPO TIENE INSTALADO                         "
echo "                                                                             "
echo "TIPO DE S.O.: <"`uname -o`">                                                 "
echo "NOMBRE / VERSIÓN DEL S.O.: &lt;"$NOMBRE_SISTEMA"&gt; / &lt;"$VERSION_SISTEMA"&gt;        "
echo "KERNEL / ARQUITECTURA: <"`uname -r`"> / <"`uname -m`">                       "
echo "INFO DEL CPU: ("$FABRICANTE_CPU") / ("$MODELO_CPU") / ("$NUM_CPU") / ("$NUCLEO_CPU") / ("$CACHE_CPU")"
printf %80s |tr " " "="
echo ""
echo ""

PS1="\[\e[33;1m\]┌─( \[\e[34;1m\]\u@\h\[\e[37;1m\] ) * * * * \d - \t * * * * { \[\e[31;1m\]\w\[\e[33;1m\] }\n└──┤ \[\e[32m\]# "

`

第二步:編輯根.bashrc

再次使用已經使用的編輯器編輯 .bashrc文件 德爾 超級用戶根 必須位於其路徑/根目錄中。

插入以下每一行的內容以及在執行用戶終端時您認為方便顯示給用戶的所有其他內容:

########################### PARÁMETROS DE MONITOREO ###########################

alias cc='clear'

PROXY=$(route -n | sed -n '3p' | awk '{print $2}')

IP_SERVIDOR_DNS=$(cat /etc/resolv.conf | sed '1 d' | grep nameserver | sed -n '1p' | awk '{print $2}')
DOMINIO=$(cat /etc/resolv.conf | sed '1 d' | grep search | sed -n '1p' | awk '{print $2}')

DATA_USUARIO1=$(du -sh /home/ | sort -r | awk '{print $1}')
DATA_ROOT=$(du -sh /root | awk '{print $1}')
DATA_VAR=$(du -sh /var | awk '{print $1}')

MEM_TOTAL=$(free -h | sed '1 d' | grep Mem: | awk '{print $2}')
MEM_USADA=$(free -h | sed '1 d' | grep Mem: | awk '{print $3}')
MEM_LIBRE=$(free -h | sed '1 d' | grep Mem: | awk '{print $4}')
MEM_COMPARTIDA=$(free -h | sed '1 d' | grep Mem: | awk '{print $5}')
MEM_ALMACENADA=$(free -h | sed '1 d' | grep Mem: | awk '{print $6}')
MEM_CACHEADA=$(free -h | sed '1 d' | grep Mem: | awk '{print $7}')

PART1_TOTAL=$(df -h | sed '1 d' | grep disk | awk '{print $2}')
PART1_USADO=$(df -h | sed '1 d' | grep disk | awk '{print $3}')
PART1_DISPONIBLE=$(df -h | sed '1 d' | grep disk | awk '{print $4}')
PART1_PORCENTAJE=$(df -h | sed '1 d' | grep disk | awk '{print $5}')
PART1_PUNTOMONTAJE=$(df -h | sed '1 d' | grep disk | awk '{print $6}')

CARGA_1MIN=$(top -n 1 -b | grep "load average:" | awk '{print $12}' | sed 's/,//2')

CARGA_5MIN=$(top -n 1 -b | grep "load average:" | awk '{print $13}' | sed 's/,//2')
CARGA_15MIN=$(top -n 1 -b | grep "load average:" | awk '{print $14}' | sed 's/,//2')

USER_ONLINE=$(top -n 1 -b | grep "load average:" | awk '{print $8}')
PROC_ZOMBIE=$(top -n 1 -b | grep "zombie" | awk '{print $10}')

TIEMPO_ENCENDIDO=$(uptime | awk '{print $3,$4}' | cut -f1 -d,)

FABRICANTE_CPU=$(grep "vendor_id" /proc/cpuinfo | sed q | awk '{print $3}')
MODELO_CPU=$(grep "model name" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}')
NUM_CPU=$(grep "processor" /proc/cpuinfo | sort -r | sed q | awk '{print $3}' | echo `expr $NUM_CPU + 1`)
NUCLEO_CPU=$(grep "cpu cores" /proc/cpuinfo | sed q | awk '{print $4}')
CACHE_CPU=$(grep "cache size" /proc/cpuinfo | sed q | cut -d ":" -f 2 | awk '{print $0}')

IP_ETH0=$(ifconfig eth0 | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d " " -f 1)
MAC_ETH0=$(ifconfig eth0 | sed -n '1p' | awk '{print $5}')

###############################################################################

if ping -c 1 8.8.8.8 &amp;&gt; /dev/null; then CONEXION_INTERNET=Habilitado; else CONEXION_INTERNET=Deshabilitado; fi

set -o vi

printf %80s |tr " " "="
echo ""
echo "      ADVERTENCIA - USTED HA INICIADO SESIÓN EN EL EQUIPO SERVIDOR DE LA      "
echo "                             EMPRESA INSTITUCIÓN XYZ                                "
echo "       RECUERDE TENER EXTREMO CUIDADO CON CUALQUIER CAMBIO A REALIZAR        "
printf %80s |tr " " "="
echo ""
printf %80s |tr " " "="
echo ""
echo "                    PARÁMETROS ACTUALES DE FUNCIONAMIENTO                    "
echo "                                                                             "
echo "MEMORIA TOTAL: ("$MEM_TOTAL") - MEMORIA USADA: ("$MEM_USADA") - MEMORIA LIBRE: ("$MEM_LIBRE")"
echo "DISCO PRINCIPAL: ("$PART1_TOTAL") - ESPACIO USADO: ("$PART1_USADO") - ESPACIO LIBRE: ("$PART1_DISPONIBLE") - %: ("$PART1_PORCENTAJE") - PARTICION: ("$PART1_PUNTOMONTAJE")"
echo "CARGA PROMEDIO DEL SISTEMA: 1 MIN ("$CARGA_1MIN") -  5 MIN ("$CARGA_5MIN") - 15 MIN ("$CARGA_15MIN")"
echo "USUARIOS CONECTADOS: ("$USER_ONLINE") -  PROCESOS ZOMBIES: ("$PROC_ZOMBIE")"
echo "TIEMPO ARRANQUE/ENCENDIDO: ("$TIEMPO_ENCENDIDO")                             "
echo "ESPACIO USADO: /home = ("$DATA_USUARIO1") /root = ("$DATA_ROOT") /var = ("$DATA_VAR")"
printf %80s |tr " " "="
echo ""
echo ""
PS1="\[\e[33;1m\]┌─( \[\e[34;1m\]\u@\h\[\e[37;1m\] ) * * * * \d - \t * * * * { \[\e[31;1m\]\w\[\e[33;1m\] }\n└──┤ \[\e[32m\]$ "

第三步:編輯根.bashrc

註銷並顯示終端。 重新啟動並嘗試更改。 在以下圖像中,它看起來應該類似於以下所示:

步驟1:終端啟動

步驟2:編輯用戶.bashrc

步驟3:嵌入在用戶.bashrc中的內容

步驟4:根登錄

步驟5:根登錄

步驟6:編輯根.bashrc文件

步驟7:編輯根.bashrc文件

步驟8:編輯根.bashrc文件

步驟9:新用戶終端的演示示例

步驟10:新用戶終端的演示示例

步驟11:新用戶終端的演示示例

第四步(可選):調整別名

請記住,在 的.bashrc 它還可以節省大量的寫作時間。 取消註釋.bashrc中默認出現的註釋,例如:

alias ls='ls $LS_OPTIONS'
<strong>alias ll='ls $LS_OPTIONS -l'
<strong>alias l='ls $LS_OPTIONS -lA'

alias rm='rm -i'

並添加您認為必要的命令,因為它們是常用的命令,例如:

alias cc='clear'

重要的是,以自學成才的方式了解更多 變量,別名,.bashrc 和語言 bash shell 以獲得更高級別的終端。 通過ssh啟動遠程會話時,可以達到相同的目的,我們稍後會在其他出版物中看到。

我希望這些小孩子 “提示” 使他們易於執行基本但有用的優化,這些優化通常只保留給 技術,計算,自由軟件和GNU / Linux.

提醒: 如果任何命令行執行失敗或顯示正確的值,請確保手動測試命令提示符的每個部分以嘗試調整某些變量的值或語法。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   伊佩凱 他說:

    別名是最好的。 對於默認情況下包含在bashrc中的某些文件,我並不認為不好:la(ls -a)和ll(ls -l)。 最後,我添加參數-h。

    其他實用別名:
    s ='sudo'
    cd1 ='cd ..'
    cd2 ='cd ../ ..'
    rmd ='rm -r'(我用它來刪除包含文件的目錄)
    shutdown ='sudo shutdown -h now'
    del ='trash-put'(將文件移至垃圾桶,trash-cli package命令)

  2.   托諾 他說:

    自從我去年在Reddit上看到這個別名以來,它一直是我的最愛:
    別名fuck ='sudo $(history -p !!)'

  3.   馬丁 他說:

    文章及其對控制台的外觀非常好。 一些貢獻:
    -在Ubuntu中,別名可以放在我不知道的其餘發行版中的單獨文件(.bash_aliases)中,但是可以通過在.bashrc中添加以下行來實現:
    如果[-f〜/ .bash_aliases]; 然後
    。 〜/ .bash_aliases
    fi
    這樣可以使別名更加有序,對於像我這樣健忘的人,您可以添加此別名,以顯示列出別名的文件:
    別名lsalias ='more〜/..bash_aliases'
    -我還有一個不常用的命令文本文件(我通常不記得了),名為command_utiles.txt,並且已準備好以下別名:alias cutil ='more〜/ / command_utiles.txt'
    -我使用的更多別名:
    別名cdu ='cd〜'
    alias lof ='ls -lSr | more'#按大小顯示文件詳細信息
    別名lod ='du -sk * | sort -rn'#顯示按大小排序的目錄
    alias deo ='du -sh'#估計指定目錄所佔用的空間
    別名psa ='ps -eafw | 更多'#顯示更多內容的所有流程
    別名psg ='ps -eafw | grep'#顯示所指示的過程
    -最後,我為用戶提供了一種替代方法:
    SYSTEM_NAME = $(cat / etc / os-release | grep名稱| grep -v“ VERSION” | sed -n'1p'| cut -f2 -d \»)
    SYSTEM_VERSION = $(cat / etc / os-release | grep VERSION = | sed -n'1p'| sed's / VERSION = //'| sed's /»// g')
    MANUFACTURER_CPU = $(grep“ vendor_id” / proc / cpuinfo | sed q | awk'{print $ 3}')
    CPU_MODEL = $(grep“型號名稱” / proc / cpuinfo | sed q | cut -d“:”-f 2 | awk'{print $ 0}')
    NUM_CPU = $(grep“處理器” / proc / cpuinfo | sort -r | sed q | awk'{print $ 3}'| echo expr $NUM_CPU + 1)
    NUCLEO_CPU = $(grep“ cpu cores” / proc / cpuinfo | sed q | awk'{print $ 4}')
    CACHE_CPU = $(grep“緩存大小” / proc / cpuinfo | sed q | cut -d“:” -f 2 | awk'{print $ 0}')
    USER_Data = $(du -sh〜| sort -r | awk'{print $ 1}')

    明確
    printf%130s | tr»»«=»
    扔出去 ””
    回應«DATE:«date +%c --date='+1 year'
    迴聲«內核:«uname -o»<«uname -r«> <«uname -m«>»
    echo“ DISTRIBUTION:” $ SYSTEM_NAME“” $ SYSTEM_VERSION“”
    echo“ CPU:” $ MODEL_CPU“,” $ NUCLEO_CPU“ Nuclei,” $ CACHE_CPU“ Cache”
    迴聲«US​​ED SPACE:«$ DATA_USUARIO
    printf%130s | tr»»«=»
    扔出去 ””
    ############################
    回顯“有用的命令:”
    迴聲»-在DEB軟件包系統中安裝RPM:Alien -c -i package.rpm»
    echo»-遞歸更改用戶和文件組:chown -hR用戶:組[文件或目錄]»
    echo»-複製保留權限:cp -ax源目標»
    迴聲»-顯示活動存儲庫:grep -i ppa.launchpad.net /etc/apt/sources.list.d/*.list»
    迴聲»-添加存儲庫:apt-add-repository ppa:存儲庫»
    迴聲»-查看更多Cutil命令»
    迴聲»-顯示別名lsalias»
    printf%130s | tr»»«=»
    扔出去 ””
    扔出去 ””
    #PS1 =»[\ e [33; 1m]┌─([\ e [34; 1m] \ u @ \ h [\ e [37; 1m])* * * * \ d-\ t * * * * {[\ e [31; 1m] \ w [\ e [33; 1m]} \n└──┤[\ e [32m]#»
    PS1=»[\e[33;1m]┌─([\e[34;1m]\u@\h[\e[37;1m])>{ [\e[31;1m]\w[\e[33;1m] }\n└──┤ [\e[32m]# «

    1.    亞巴頓 他說:

      為什麼最好不寫自己的文章?

  4.   亞巴頓 他說:

    這些是我喜歡的教學語言!

  5.   Ing。Jose Albert 他說:

    好吧,我很高興您喜歡它並為您服務!

    明天我希望發表另一篇文章! 連續下坡。

  6.   用戶架構 他說:

    問候和無限感激分享這些信息。
    我對GNU / Linux的管理了解不多(我只是一個經驗豐富的好奇用戶,沒有經過學術培訓),但是我記得在一些網站上閱讀了有關特權升級的安全性問題。 .bashrc腳本中的一些命令和管道,在我看來,它們可以簡化黑客或黑客的工作。
    謹此致謝。

  7.   Ing。Jose Albert 他說:

    使用Shell腳本優化終端非常簡單,看看做一個好的Shell腳本可以走多遠。

    LPI-SB8測試ScreenCast(LINUX POST安裝-腳本BICENTENARIO 8.0.0)
    (lpi_sb8_adecuación-audiovisual_2016.sh/ 43Kb)

    參見截屏視頻: https://www.youtube.com/watch?v=cWpVQcbgCyY

  8.   LEA 他說:

    很棒的教程! 您推薦在Linux上學習任何本書,以更好地了解Shell腳本,配置和服務器安全性嗎? 謝謝