Bash skripty – příklady

Ukázka skriptu, který kontroluje  funkčnost web serveru – stahuje stránku , která se nemění a pokud je stránka na web serveru stejná jako při předchozím průchodu oznámí, že je stejná

#!/bin/bash
prom=`wget --no-verbose -O - http://192.168.10.1|md5sum| cut -d " " -f 1`
echo prom $prom
if [ -f /tmp/docasny ]; then
    . /tmp/docasny
    if [ "$prom1" == "$prom" ]; then
       echo "vse je OK"
    else
       echo "chyba serveru"
       prom1=$prom
       echo prom1=\"$prom\" > /tmp/docasny
    fi
else
    prom1=$prom
    echo prom1=\"$prom\" > /tmp/docasny
fi

Skript, který kontroluje dostupnost síťového zařízení pomocí příkazu ping

#!/bin/bash
prom=`ping 192.168.1.1 -s 1450 -c 10|grep transmitted|awk '{print $6;}' |tr -d '%'`
if [ "$prom" -lt "5" ] ; then
    echo OK
else
    echo Problem
fi

zjisteni kolik ma uzivatel souboru

#!/bin/bash
cd /home/ucitel
prom=`du|wc -l`
if [ "$prom" -ge "10000" ] ; then
    echo uzivatel ma moc souboru
else
    echo uzivatel je v poho
fi

zpracovani a rozparsovani textoveho souboru

#!/bin/bash
filename='users.txt'
echo Start
cat $filename| while read line
do
    bar=(`echo $line | tr ';' ' '`)
    echo ${bar[1]}
done

Ukázkový skript

#!/bin/bash
filename='users.txt'
echo Start
cat $filename| while read line
do
    bar=(`echo $line | tr ';' ' '`)
    echo user ${bar[0]}
    echo heslo ${bar[1]}
    bar1=(`echo ${bar[2]}| tr ',' ' '`) 
    for (( i=0; i < ${#bar1[@]}; i++ ))
    do
        echo skupina$i ${bar1[$i]}
        getent group ${bar1[$i]}
        if [ $? -ne 0 ] ; then
                sudo su -c "groupadd  ${bar1[$i]}"
        fi
    done
    getent passwd ${bar[0]}
    if [ $? -ne 0 ] ; then
       sudo su -c "useradd ${bar[0]} -p ${bar[1]} -m -g users -G ${bar[2]}"
    fi
done

varianta vyčtení dat z DB

prom=`echo "select * from users"|mysql -u [ucetDB] -p[heslo]  test|grep -v heslo`

Script na zálohy

#!/bin/bash
datum=`date +%d%m%y`;
tar cvfz /tmp/$datumzaloha.tar.gz /etc
if [ "$?" -eq "0" ]; then
 logger "záloha OK"
else
 logger "záloha NO"
fi

počítání počtu spojení na určitý port
příprava firewallu

iptables -F
iptables -A OUTPUT -p tcp -sync --dport 80 -j LOG # budu logovat pouze požadavky na spojení  s odchozím portem 80

vyčítání informací z firewallu

iptables -L -v #počet paketů případně bytů

případně z LOG systému

cat /var/log/messages |grep ....

Script na zálohy

Varianta pro odeslání informací mailem viz stránka