Skripty
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 #.
Obsah:
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
- Vytvoříme soubor například skript.sh
- Do souboru zapíšeme následující: #!/bin/bash
# Muj prvni skript
clear
echo „Ahoj světe!“ - Uděláme soubor skript.sh spustitelný pomocí chmod: chmod 777 skript.sh
- Spustíme náš první skript: ./skript.sh
- 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ě.