Kilka przydatnych skryptów, jeden pozwala na powiadomienie mail-em gdy dysk się przepełnia, drugi modyfikuje firewall-a na podstawie pliku tekstowego, kolejny robi proste backupy.
Wysyłanie maila gdy pliki przekroczą określoną procentową powierzchnie dysku
Celem skryptu jest poinformowanie administratora, jeżeli jakiejś partycji grozi przepełnienie. Pozwoli mu to odpowiednio zareagować na potencjalne niebezpieczeństwo. Skrypt korzysta z języka powłoki oraz języka awk służącego do obrabiania danych tekstowych.
#! /bin/bash
FREE=`df | grep /dev | awk '{ if ($5 > 95) print $0 }'`
if [ "$FREE" != "" ]
then
echo "AV za duzo miejsca zajete.... " $FREE | mail -s "AV: grozba zapelnienia dysku!" krzysztof@linuxexpert.pl
Dodawanie do firewalla reguł blokujących hosty wylistowane w pliku
Czasem się może zdarzyć iż na podstawie logów systemowych (np. pocztowych) chcesz wyblokować określone komputery. Poniższy skrypt będzie blokował komputery wymienione w określonym pliku jedynie do kolejnego restartu firewalla.
#! /bin/sh
## Cięcie adresów z listy zakazanych pocztowych
ADRESY=`cat ./hosty.txt`
##echo "#/bin/sh " > sprawdz.sh
#chmod 700 sprawdz.sh
#NAZWA="";
for ADRES in $ADRESY
do
iptables -A INPUT -s $ADRES -j REJECT
done
Skrypt tworzący backupy
Poniższy skrypt wykonuje backup określonych plików w zależności od użytego parametru przy wywołaniu skryptu. Każdy backup ma ściśle określoną nazwę w której zawarta jest data, dzięki czemu łatwo określić kiedy została zrobiona.
KATALOG_KOPII="/data/backupy/system"
DATA=`date '+%Y-%m-%d'`
KOMPUTER="AV_NEW"
SERWER_BACKPOW="192.168.12.1"
MAIL="krzysztof@linuxexpert.pl"
### skrypt
## stworzenie katalogu i wejście do niego
cd $KATALOG_KOPII 2>/dev/null || mkdir -p $KATALOG_KOPII/dane
cd $KATALOG_KOPII
echo '---------------------------------------------------' > $KATALOG_KOPII/log.log
echo 'Start : $KOMPUTER ' >> log.log
echo $DATA >> log.log
mkdir -p $KATALOG_KOPII/dane/$DATA
if [ "$1" == "" ]
then
echo "uzycie: kopia_ziutus2 calosc|system|klient"
fi
if [ "$1" == "calosc" ]
then
echo "Robie kopie calosciowa -nowy skrypt";
tar -cvzf $KATALOG_KOPII/dane/$DATA/$DATA.$KOMPUTER.calosc.tgz / -X /etc/backup/opusc_pelna.txt
# ssh backupy@192.168.12.1 mkdir -p /backup/$KOMPUTER/calosc
# scp $KATALOG_KOPII/dane/$DATA/$DATA.$KOMPUTER.calosc.tgz backupy@192.168.12.1:/backup/$KOMPUTER/calosc/$DATA.$KOMPUTER.calosc.tgz
echo 'Koniec : kopia ALL1' >> log.log;
fi
if [ "$1" == "klient" ]
then
echo "Robie kopie danych klienckich";
tar -czf $KATALOG_KOPII/dane/$DATA/$DATA.$KOMPUTER.klient.tgz -T /etc/backup/klient.txt;
# ssh backupy@192.168.12.1 mkdir -p /backup/$KOMPUTER/klient
# scp $KATALOG_KOPII/dane/$DATA/$DATA.$KOMPUTER.klient.tgz backupy@192.168.12.1:/backup/$KOMPUTER/klient/$DATA.$KOMPUTER.klient.tgz
echo 'Koniec : klient ALL1' >> log.log;
fi
if [ "$1" == "binaria" ]
then
echo "Robie kopie danych binaria";
tar -czf $KATALOG_KOPII/dane/$DATA/$DATA.$KOMPUTER.binaria.tgz -T /etc/backup/binaria.txt
# ssh backupy@192.168.12.1 mkdir -p /backup/$KOMPUTER/binaria/
# scp $KATALOG_KOPII/dane/$DATA/$DATA.$KOMPUTER.binaria.tgz backupy backupy@192.168.12.1:/backup/$KOMPUTER/binaria/$DATA.$KOMPUTER.binaria.tgz
echo 'Koniec : binaria' >> log.log;
fi
## koniec skryptu
echo 'Stop :' >> log.log
echo '---------------------------------------------------' >> log.log
Wykonywanie poleceń z uprawnieniami użytkownika root na zdalnej maszynie
Czasem wygodnie jest stworzyć silnie zabezpieczoną maszynę, z której będą wypływały polecenia sterujące pracą innych hostów.
#! /bin/bash ssh backupy@192.168.12.1 sudo /srbin/backup2.sh calosc
Skrypt ściągający automatycznie backupy utworzone w poprzednim punkcie
#! /bin/sh
###zmienne
DATA_Z=`date '+%Y-%m-%d'`
KATALOG_KOPII_ZDALNY="/data/backupy/system/dane"
KATALOG_KOPII_LOKALNY="/backup/AV/"
KOMPUTER_ZDALNY="192.168.12.1"
KOMPUTER="AV_NEW"
MAIL="krzysztof@linuxexpert.pl"
### skrypt
## stworzenie katalogu i wejście do niego
cd $KATALOG_KOPII 2>/dev/null || mkdir -p $KATALOG_KOPII/dane
cd $KATALOG_KOPII
if [ $1 == "" ]
then
scp backupy@$KOMPUTER_ZDALNY:$KATALOG_KOPII_ZDALNY/$DATA_Z/$DATA_Z.$KOMPUTER.calosc.tgz /backup/AV/$DATA_Z.$KOMPUTER.calosc.tgz
else
scp backupy@$KOMPUTER_ZDALNY:$KATALOG_KOPII_ZDALNY/$1/$1.$KOMPUTER.calosc.tgz /backup/AV/$1.$KOMPUTER.calosc.tgz
fi