Bash skripty k maturitě

1. Vytvoření skriptu:

sudo mcedit skript

2. Hotový skript by měl vypadat asi takto:

Skripty

3. Změna atributů skriptu (aby se dal spustit)

sudo chmod 777 skript

4. Spuštění skriptu

./skript

Varianty skriptů k maturitě:

A. Kolik bylo odesláno paketů na rozhrání eth0

ifconfig eth0|grep 'RX packets'|tr ':' ' '|awk '{print $3;}'| tr -d 'packets:'

B. Kolik bylo paketů odesláno na port 80

sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -L -v
sudo iptables -L -v|grep 'tcp dpt:http'|awk '{print $1;}'

Poznámka: Vymazání firewallu

sudo iptables -F

C. Zpracovani a rozparsovani textoveho souboru (Vytváření uživatelů z textového souboru)

Vytvoření textového souboru o těchto parametrech

sudo mcedit users.txt

Soubor bude vypadat např. nějak takto:

uzivatele

Vytvoření skriptu, který bude vypadat takto

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

D. Zálohování adresáře

#!/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

E. Zálohování databáze

#!/bin/bash
 datum=`date +%d%m%y`;
 mysqldump -u root -p"heslo" --all-databases |gzip -c > /tmp/$datum-mysqlbackup.gz
 if [ "$?" -eq "0" ]; then
 logger "záloha OK"
 else
 logger "záloha NO"
 fi

Parsování proměnné do pole s oddělovacím znakem a vypsání na obrazovku

#!/bin/bash
prom="moje prvni sluzba"
echo "vystupni retezec :" $prom
bar1=($prom)
echo ${bar1[1]}
echo "pocet prvku v poli" ${#bar1[@]} 
echo $prom "smazani prvku..." `echo $prom|tr -d 'prvni'`
echo $prom "nahrada prvku..." `echo $prom|tr 'prvni' 'druha'`

Příklad v bashi a v pythonu

#!/usr/bin/python
import os
groups=os.popen("groups").read().split()
#print groups
for skupina in groups:
    if skupina == 'adm':
        print "uzivatel je ve skupine adminu"

a v bashi

#!/bin/bash
if test -e "/tmp/zaloha";then
    echo "adresar existuje"
else
    echo "adresar neexistuje, bude vytvoren"
    mkdir /tmp/zaloha
fi
bar=`groups`
bar=($bar)
for i in ${bar[@]};do
	#echo $i
    if [ $i = 'adm' ]; then
	echo "uzivatel je ve skupine"
    fi
done