Zmenšení fotografií na požadovaný formát. (ukázka)
#!/bin/bash

# Zmensi fotky na zadany format. Pokud jsou uz mensi nez pozadovany rozmer, tak nezmensuje.
# dalsi info viz http://www.imagemagick.org/script/command-line-options.php?#resize

# Autor: Henly
# Dne: 7.10.2008
# Licence: GPL

#kontrola vstupnich parametru (presne 1 parametr)
if [ "$#" != 1 -o "$1" == "-h" -o "$1" == "--help" ]; then
  echo "Pouziti: zmensi_foto.sh <max_rozmer>"
  echo "napr: ./zmensi_foto.sh 640"
  echo "- zmensi na rozmer 640x480 nebo 480x640 v zavislosti na orientaci"
  echo "- zmensene fotky zapisuje pod nazvem stylu resize_640_nazev.jpg"
  echo
  exit 1
fi

#typ integer
typeset -i rozmer
rozmer=$1
if [ "$rozmer" -lt 1 ]; then
  echo "Rozmer musi byt vetsi nez 0!" > /dev/stderr
  echo
  exit 1
fi

ls *.[jJ][pP][gG] | grep " "
if [ $? -eq 0 ]; then
  echo V nazvech fotek se nesmi vyskytovat mezery! Koncim. >> /dev/stderr
  exit 1
fi

echo "Zmensuji jpg soubory v teto slozce (puvodni soubory budou zachovany):"
for i in $(ls *.[jJ][pP][gG]); do
  echo -n .
  convert $i -resize "${rozmer}x${rozmer}>" resize_${rozmer}_$i
done

echo ; echo hotovo

Posunutí času focení v EXIFu o hodinu dopředu. (ukázka)
#!/bin/bash

# Posune cas foceni v EXIFu o hodinu dopredu. V pripade foceni mezi 23 a 24 hodinou, nutno upravit rucne.

# Autor: Henly
# Dne: 12.9.2oo8
# Licence: GPL

echo Souboru k uprave: $#

soubory=($*)
#datumy foceni fotek do pole
datumy=($(exif -mt 0x9003 ${soubory[*]} | awk '{print $1}'))
nove_casy=($(exif -mt 0x9003 ${soubory[*]} | awk '{print $2}' | awk -F: '{if ($1 < 23) print $1+1":"$2":"$3; else print "doplnit_rucne"}'))
puvodni_casy=($(exif -mt 0x9003 ${soubory[*]} | awk '{print $2}'))

if [ ${#soubory[*]} -ne ${#datumy[*]} -o ${#soubory[*]} -ne ${#nove_casy[*]} -o ${#soubory[*]} -ne ${#puvodni_casy[*]} ]; then
  echo "Chyba aplikace! Koncim."  >> /dev/stderr
  echo "Mozne duvody:" >> /dev/stderr
  echo "  Nektere soubory neexistuji, nebo obsahuji mezery." >> /dev/stderr
  echo "  Soubory nejsou fotografie, nebo neobsahuji EXIF data." >> /dev/stderr
  exit 1
fi

pocet=${#soubory[*]}

for i in $(seq 0 $[pocet-1]); do
        echo -e "${soubory[$i]}:\t${datumy[$i]} ${puvodni_casy[$i]}\t->\t${datumy[$i]} ${nove_casy[$i]}"
done

echo "Chcete posunout casy foceni takto o hodiny dopredu?"
echo -n "(ano/ne) "
read dotaz
if [ "$dotaz" != "ano" ] ; then
        echo Neprovadim, koncim..
        exit
fi

for i in $(seq 0 $[pocet-1]); do
        echo -n "."
        exif -mt 0x9003 ${soubory[$i]} --set-value="${datumy[$i]} ${nove_casy[$i]}" > /dev/null
	mv ${soubory[$i]}.modified.jpeg ${soubory[$i]}
done

echo ; echo hotovo
Datum vyfocení k názvu fotografie. (ukázka)
#!/bin/bash

# Prida cas k nazvu fotky stylem 2008_09_27-11:49:08-Chuchelna.jpg.

# Autor: Henly
# Data: 2oo7
# Posledni uprava: 12.9.2oo8
# Licence: GPL

ls *.[jJ][pP][gG] | grep " "
if [ $? -eq 0 ]; then
  echo V nazvech fotek se nesmi vyskytovat mezery! Koncim. >> /dev/stderr
  exit 1
fi

soubory=($(ls *.[jJ][pP][gG]))
#datumy foceni fotek do pole
casy=($(exif -mt 0x9003 ${soubory[*]} | sed -e 's/:/_/1' -e 's/:/_/1' -e 's/ /-/'))

if [ ${#soubory[*]} -ne ${#casy[*]} ]; then
  echo Chyba aplikace, neshoduji se delky poli! Koncim. >> /dev/stderr
  exit 1
fi

pocet=${#soubory[*]}

for i in $(seq 0 $[pocet-1]); do
        echo -e "${soubory[$i]}\t->\t${casy[$i]}-${soubory[$i]}"
done

echo "Chcete prejmenovat fotky timto stylem?"
echo -n "(ano/ne) "
read dotaz
if [ "$dotaz" != "ano" ] ; then
        echo Neprovadim, koncim..
        exit
fi

for i in $(seq 0 $[pocet-1]); do
        echo -n "."
        mv ${soubory[$i]} ${casy[$i]}-${soubory[$i]}
done

echo ; echo hotovo

Ověření internetu (ukázka)
#!/bin/bash
vysl=$(ping -q -s 1440 -i 0.2 -c 20 seznam.cz | tail -2)
vypis=$(
  echo $vysl | awk '{print "Ztráta ne seznam.cz je "$6"."}' ;
  echo $vysl | awk '{print $14}' | awk -F/ '{print "Průměrné zpoždění je "$2" ms."}'
  )
kdialog --msgbox "$vypis"
Statistiky přihlašování uživatelů. (ukázka)
#!/bin/bash

#ulozime statistiky z minuleho mesice do souboru pro rychlejsi pristup
#v ruznych distribucich muze byt soubor pojmenovan ruzne, nebo byt i komprimovan
last -f /var/log/wtmp.1 > last.log

#z jakeho mesice statistiky jsou
mesic=$(tail -1 last.log | awk '{print $4}')

#udelame si seznam regulernich uzivatelu + root
#na ruznych distribucich zacinaji uzivatele ruznym id
uziv=root\ $(awk -F: '$3>=1000 && $3<2000{print $1}' /etc/passwd)

echo Statistiky\ prihlaseni\ za\ mesic:\ $mesic
echo 'Nepovolene sluzby se nezobrazuji.'
echo '---------------------------------'
#postupne prochazime uzivatele a delame vystup
for i in $uziv ; do
	#v last se uklada ze jmena jen 8 znaku, proto zkratim jmeno
	i_short=$(echo $i | dd bs=8 count=1 2>/dev/null)

	echo -n $i
        
	#hezci vystup :-) pokud je jmeno moc kratke, prida tabelator
	if [ $(echo $i | wc -m) -lt 9 ] ; then echo -n '	' ; fi
			
	#jaky pouziva dany uzivatel shell
	shell=$(grep ^$i: /etc/passwd | awk -F: '{print $7}')
	
	#pokud je shell /bin/false, neukazovat info o prihlasovani na ssh
	if  [ $shell != /bin/false ] ; then
		echo -n '	ssh:'
		echo -n $(grep ^$i_short\  last.log | grep pts | wc -l)
	else
		echo -n '	'
	fi
							        
	#pokud ma uzivatel zakazano ftp, neukazovat info o prihlasovani na ftp
	if [ ! $(grep -x $i  /etc/ftpusers) ] ; then 
		echo -n '	ftp:'
		echo -n $(grep ^$i_short\  last.log | grep ftpd | wc -l)
	else
		echo -n '	'
	fi
  
	#celkovy pocet prihlaseni pro kontrolu
	echo -n '	celkem:'
	grep ^$i_short\  last.log | grep - | wc -l

done

#smazat soubor se statistikami
rm last.log
Tento skriptík odešle změny v daných adresářích na mail. (ukázka odeslaného mailu)
#!/bin/bash
cesta=/etc/skripty/co_je_noveho

###################################
###### nejdrive rychly prehled #########
###################################

#udela seznam adresaru
find /mnt/ftpdisk/upload/ -type d > $cesta/upload_d.new
find /mnt/ftpdisk/hotovo/ -type d > $cesta/hotovo_d.new

#porovna s predchozim seznamem a zapise rozdily
diff $cesta/hotovo_d $cesta/hotovo_d.new > $cesta/rozdily_d
diff $cesta/upload_d $cesta/upload_d.new >> $cesta/rozdily_d

#smaze puvodni seznam a nahradi jej novym
rm $cesta/hotovo_d
rm $cesta/upload_d
mv $cesta/hotovo_d.new $cesta/hotovo_d
mv $cesta/upload_d.new $cesta/upload_d

#upravi seznamu:
#> /mnt/ftpdisk/* prejmenuje na +./*
#<                              -
sed -e 's@< /mnt/ftpdisk/@- ./@' -e 's@> /mnt/ftpdisk/@+ ./@' $cesta/rozdily_d > $cesta/rozdily_d.temp
mv $cesta/rozdily_d.temp $cesta/rozdily_d

###################################
######### kompletni prehled ##########
###################################

#udela seznam souboru
find /mnt/ftpdisk/upload/ > $cesta/upload.new
find /mnt/ftpdisk/hotovo/ > $cesta/hotovo.new

#porovna s predchozim seznamem a zapise rozdily
diff $cesta/hotovo $cesta/hotovo.new > $cesta/rozdily.temp
diff $cesta/upload $cesta/upload.new >> $cesta/rozdily.temp

#smaze puvodni seznam
rm $cesta/hotovo
rm $cesta/upload

#novy seznam prejmenuje na "vychozi"
mv $cesta/hotovo.new $cesta/hotovo
mv $cesta/upload.new $cesta/upload

#upravi seznamu:
#> /mnt/ftpdisk/* prejmenuje na +./*
#<                              -
sed -e 's@< /mnt/ftpdisk/@- ./@' -e 's@> /mnt/ftpdisk/@+ ./@' $cesta/rozdily.temp > $cesta/rozdily
#nevypisovat *.r[0-9] (*.r01 *.r02 atd.)
grep -v \.r[0-9][0-9]*$ $cesta/rozdily > $cesta/rozdily.temp2
mv $cesta/rozdily.temp2 $cesta/rozdily
#nevypisovat *.[0-9] (*.001 *.002 atd.)
grep -v \.[0-9][0-9]*$ $cesta/rozdily > $cesta/rozdily.temp2
mv $cesta/rozdily.temp2 $cesta/rozdily
#nevypisovat *.part[0-9].rar (*.part01.rar *.part02.rar atd.)
grep -v \.part[0-9][0-9]*\.rar $cesta/rozdily > $cesta/rozdily.temp2
mv $cesta/rozdily.temp2 $cesta/rozdily

###################################
########## vytvoreni mailu ###########
###################################

#vynulovani
echo -n "" > $cesta/posli

#vytvori text mailu
#test -s ... ok, pokud existuje a je vetsi nez 0
if [ -s $cesta/rozdily_d ]; then
        echo "Rychly prehled (jen adresare):" > $cesta/posli
        echo "==============================" >> $cesta/posli
        cat $cesta/rozdily_d >> $cesta/posli
        echo "" >> $cesta/posli
        echo "" >> $cesta/posli
        echo "" >> $cesta/posli
fi
if [ -s $cesta/rozdily ]; then
        echo "Kompletni prehled:" >> $cesta/posli
        echo "==================" >> $cesta/posli
        cat $cesta/rozdily >> $cesta/posli
fi

#rozesle maily
#-e ... neposilat pokud je mail prazdny
#ftpnovinky jsou nadefinovany v /etc/aliases
cat $cesta/posli | mail -es "co je noveho" ftpnovinky
Sleduje vytížení procesoru a informuje na mail pokud překročí určité hodnoty. (ukázka odeslaného mailu)
#!/bin/bash

#tento skript ma za ukol hlidat vytizeni procesoru

#To s tim grepem je trochu tezkopadny, ale
#funguje to. (z dob, kdyz jsem se skripty zacinal)

while true; do  #stale opakuj dokola
  while ! awk '$1>=5' /proc/loadavg | grep -q . ; do
          sleep 60s
     done   #pokud neni vytizeni vesti nez 5 tak pockej 60s
     #jinak posli mail
     awk '{print "Vytizeni serveru je: " $0}' /proc/loadavg | mail -s "Pretizeni serveru" henly@email.cz


  while awk '$1>=0.5' /proc/loadavg | grep -q . ; do
          sleep 60s
     done   #pokud je vytizeni vetsi nez 0.5 tak cekej 60s
     #jinak posli mail
     awk '{print "Vytizeni serveru je: " $0}' /proc/loadavg | mail -s "Pretizeni pokleslo" henly@email.cz
     
done
Sleduje pokusy o prolomení hesel, chybně zadaná hesla a odmítnutá spojení (ukázka odeslaného mailu)
#!/bin/bash

# Tento skript ma za ukol sledovat pokusy o prolomeni hesel.
# Odmitnuta spojeni vychazi z blacklistu v /etc/hosts.deny
# Skript je automaticky spousten cronem po rotaci logu.

vystup=/etc/skripty/log
zkoumane=/var/log/auth.log.0

echo "Pokusy o prolomeni hesla pres ssh:" >  $vystup
echo "==================================" >> $vystup
grep Failed $zkoumane >> $vystup
echo "" >> $vystup

echo "Spatna hesla na ftp:" >> $vystup
echo "====================" >> $vystup
grep Incorrect $zkoumane >> $vystup
echo "" >> $vystup

echo "Odmitnuta spojeni:" >> $vystup
echo "==================" >> $vystup
grep refused $zkoumane >> $vystup
echo "" >> $vystup


mail -s "Kontrola pokusu o prunik do systemu" henly < $vystup

rm $vystup

Různé statistiky - momentálně testuji:

[CNW:Counter] návštěv od 23. 6. 2005