Skripty

Kategorie: Obecně

Vytvoření skriptů a jejich užití v systémech Linux/Unix.

Pro vytváření skriptů je třeba mít základní znalost příkazů a minimálně se vyznat v systému. Skript obsahuje definovaného interpreta, který provede příkazy, které ve skriptu jsou. Dále obsahuje hlavní část skriptu a to jsou příkazy. Programátor má v tomto případě volné ruce a může využít veškeré síly unixových příkazů stejných jako v konzoli.

Skripty mohou být výkonní pomocníci každého administrátora unixového systému a díky nim si lze leccos ulehčit a zautomatizovat. Skvěle se hodí pro opakující se činnosti, výpisy a automatizační záležitosti.

Poznámky se mohou do skriptu psát dle libosti, ale musíme před ně umístit komentovací znak #.

Základ každého skriptu

Předpokladem pro spuštění skriptu je:

  • Mít na začátku v souboru interpreta spuštění. #!/bin/bash
  • Skript musí být spustitelný. chmod 777 skript.sh

První skript

  1. Vytvoříme soubor například skript.sh
  2. Do souboru zapíšeme následující: #!/bin/bash
    # Muj prvni skript
    clear
    echo „Ahoj světe!“
  3. Uděláme soubor skript.sh spustitelný pomocí chmod: chmod 777 skript.sh
  4. Spustíme náš první skript: ./skript.sh
  5. Skript vyčistí konzoli a napíše: Ahoj světe!

Skript pro výpis systémových informací

Níže vypsaný skript vypisuje systémové informace jako jsou:

  • Verze jádra
  • Vydání OS
  • Síťové IP adresy
  • Naslouchání portů
  • Disky

Požadavkem pro plnou funkcionalitu je mít v systému níže vypsané programy, drtivá většina je samozřejmostí ve většině distribucí Linux/Unix.

  • uname
  • cat
  • ip
  • netstat
  • df
  • free

Obsahem skriptu je:

#!/bin/bash
# Vypis systemovych informaci jako jsou: jadro, vydani OS, IP adresy, naslouchání portů, disky a paměť. Vyzaduje: uname, ip, netstat, df, free
clear 
echo ""
echo "==JADRO SYSTEMU=="
echo " "
uname -a
echo ""
echo "==VYDANI OS=="
echo " "
cat /etc/os-release
echo ""
echo "==SIT=="
echo ""
ip a | grep inet
echo ""
echo "==POSLOUCHA NA=="
echo ""
netstat -tnlup
echo ""
echo "==DISKY=="
echo ""
df -h
echo ""
echo "==PAMET=="
echo ""
free -h
echo "==KONEC=="

Smyčka pomocí while – synchronizace soft. RAIDu

Na příkladu mám softwarový raid u kterého probíhá synchronizace a já chci sledovat její průběh. Doba aktualizace je 5 sekund a jestliže synchronizace neběží, nic nevypisuje.

#!/bin/bash
while true
 do
  clear&&cat /proc/mdstat | grep sync &
  sleep 5
done

Tento skript je zbytečný, protože můžeme použít příkaz watch :

watch cat /proc/mdstat

Začlenění skriptu mezi ostatní příkazy

Jestliže chceme, aby byl náš skript mezi ostatnímy příkazy a systém jej našel, musíme skript umístit do adresářů, které systém prohledává pro příkazy.

Výpis takových adresářů získáme příkazem echo $PATH:

echo $PATH

Klasické příklady adresářů, kam umístit spustitelný skript, jsou:

  • /home/uzivatel/bin
  • /home/uzivatel/.local/bin
  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin

Tipy

  • V adresáři sbin jsou umístěny programy vyžadující práva superuživatele.
  • Můžeme si vytvořit také vlastní adresář, kde budeme mít své vlastní skripty/programy. Takový adresář nadefinujeme příkazem:
export PATH=$PATH:cesta/k/adresari
  • Dalším způsobem je také upravit soubor .bashrc anebo .bash_profile a nastavit cestu ručně.