Mamy lokalizację główną + lokalizacje zdalne na lokalizacjach zdalnych mamy mikrotiki, które zarządzają całym bałaganem sieciowym. Chcemy mieć pewność, ze nasza konfiguracja w razie awarii, lub jakieś zmiany będzie do odzyskania. W takim razie robimy automatyczny backup konfiguracji mikrotików w dowolnej ilości lokalizacji.
W pierwszej kolejności konfigurujemy mikrotiki, żeby codziennie robiły backup swojej konfiguracji. Logujemy się do mikrotika z poziomu wiersza poleceń wykonujemy następujące kroki.
Dodajemy do scheludera zadanie wykonania backupu o nazwie LOK1.backup (każą linijkę wklejamy oddzielnie):
/system scheduler
add name="backup" on-event="system backup save name=LOK1.backup" \
start-date=jan/01/1970 start-time=00:00:00 interval=10h comment="" \
disabled=no
Wykonujemy pierwszy backup ręcznie:
/system backup save name=LOK1.backup
Sprawdzamy, czy mamy serwis ftp aktywny (brak X znaczy że jest ok, w przeciwnym razie musimy go odblokwać):
/
ip service print
Flags: X - disabled, I - invalid
# NAME PORT ADDRESS CERTIFICATE
0 telnet 23
1 ftp 21
2 www 80
3 ssh 22
4 X www-ssl 443 none
5 X api 8728
6 winbox 8291
7 api-ssl 8729 none
Dodajemy Grupę, politykę i użytkownika backup z hasłem i zezwalamy mu się łączyć z naszego adresu IP lub sieci (192.168.0.13/32):
/user group
add name="ftp" policy=ftp,!local,!telnet,ssh,!reboot,read,write,!policy,!test,!winbox,!password,web,!sniff,sensitive
/user
add address=192.168.0.13/32 comment="FTP backup" disabled=no group=ftp name="backup"
set [find name="backup"] password="Backup_Password"
Po stronie serwera, na który chcemy wykonać backup tworzymy plik z adresami ip i nazwą lokalizacji:
----------------------------------mikrotik.txt ----------------------------------
121.121.121.121 LOK1
122.122.122.122 LOK2
..
..
..
130.130.130.130 LOK
EOF
-----------------------------------END-OF-FILE---------------------------------
Pamiętajmy, żeby po EOF już nie było pustej linii. Pierwsza kolumna jest adresami ip naszych mikrotików, a druga nazwami lokalizacji, a także nazwami katalogów, gdzie backup trafi,oraz nazwami plików z backupem znajdujących się na mikrotikach. Następnie w tym samym katalogu (domyślnie jest to /backup/mikrotik. jak będzie inny wystarczy zmienić ścieżkę w zmiennej) umieszczamy poniższy skrypt i nadajemy mu prawa do wykonywania
chmod +x nazwa_skryptu.sh
#!/bin/bash
echo "##########################################################################"
echo "##########################################################################"
echo "######## ########"
echo "######## MIKROTIK BACKUP SCRIPT ########"
echo "######## V1.0 ########"
echo "######## 13.05.2015 ########"
echo "######## by: Grzegorz Zalewski ########"
echo "######## http://informatycznezycie.blogspot.com ########"
echo "######## ########"
echo "##########################################################################"
echo "##########################################################################"
#Zmienne
USER=backup
PASSW=Backup_Password
data=`date +%F`
date=`date +%Y-%m-%d_%H_%M`
dir=/backup/mikrotik
#utwórz katalog z datą
cd $dir
mkdir $data
cd $dir/$data
#utwórz plik lokalizacji z pliku mikrotik.txt
awk '{print $2}' < $dir/mikrotik.txt > $dir/lokalizacja.tmp
#utwórz katalogi w pętli z pliku oddzialów
while read line
do
mkdir $line
#plik z jakiego ma petla korzytstać
done <$dir/lokalizacja.tmp
#połącz sie z oddziałami i pobierz pliki pętla
while read line
do
#wyciągnij pojedynczą linie z pliku mikrotik
echo $line > line.tmp
#utworz plik z adresem ip
awk '{print $1}' < line.tmp > ip.tmp
#utworz plik z nazwa lokalizacji
awk '{print $2}' < line.tmp > lok.tmp
#stwórz zmienne
ip=$(< ip.tmp)
odd=$(< lok.tmp)
#skrypt ftp
#passive - niektóre mikrotiki w trybie aktywnym nie listuja katalogow-wymuszamy tryb passive
#get * - pobierz plik i zapisz go w danej lokalizacji
ftp -v -n $ip >> $dir/$data.transfer.log <<SCRIPT
user $USER $PASSW
binary
passive
dir
get $lok.backup $dir/$data/$lok/$lok.backup.$date
quit
SCRIPT
#plik z jakiego ma petla korzytstać
done < $dir/mikrotik.txt
#usuń pliki tymczasowe
cd $dir
rm *.tmp
cd $dir/$data
rm *.tmp
Jeśli wszystko wykonaliśmy poprawnie, to w katalogu (w naszym przypadku /backup/mikrotik)
powinien powstać katalog DATY np.: 2016-05-13 a w nim katalogi LOK1, LOK2, LOK3 itp, Wewnątrz powinny znajdować się pliki z backupem w nazwie zgodne z lokalizacja i ze znacznikiem czasowym ściągnięcia w nazwie. Jeśli plików brakuje, to w pierwszej kolejności sprawdzamy plik logu i szukamy informacji, co się stało. Następnie najlepiej spróbować połączyć się ręcznie z linii komend ftpem do mikrotika. Jeśli to nie pomoże należny jeszcze po stronie mikrotika sprawdzić:
- czy jest włączony conntrac i reguły do niego (established,related)
- czy"Service ports" FTP jest zaznaczony
- czy pomiędzy klientem i serwerem jest stosowany jakiś NAT, albo szyfrowane połączenie
Gdy ostatecznie dopniemy kwestie konfiguracyjne i wszystko zadziała jak należny wystarczy dodać skrypt do crona. Ot cała robota.
Oczywiście skrypt można wykorzystać nie tylko do archiwizacji backupu konfiguracji mikrotików. Po niewielkich modyfikacjach może mieć różnorakie zastosowanie.