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