MikroTik config archiver

Sve treba backupovati, a pogotovo configuracije bitnih uredjaja u mreži. Usput je lepo ako se ima istorijat promena. Što odmah sugeriše neki sistem za cuvanja revizija (cvs, svn, git – izbor u ovom slučaju) 🙂 Programerima su vrlo poznati, nadam se da i većina administratora u dobroj meri poznaje i koristi takve alatke. Sve to naravno ima smisla ako je konfiguracija običan text fajl, što u slučaju MikroTika je tako.

Scripta napisana pre 4-5 meseci, ali se pojavio problem da “ssh uredjaj /export” ne radi kad se scripta pokrene kao cron task. Što faktički znači da bi morala da radi iz neke screen sesije ili da se ručno pokreće, što je skoro ne prihvatljivo za ovako jednostavnu i malu scriptu. Ali danas mi Pedja Supurovic predloži rešenje za problem, tako sad može da funkcioniše kako treba. Postoji mali side efekat sa rešenjem, a to je da scripta mora da se kaci na user koji ima full privilegije na MT, za originalno rešenje je bio dovoljan read access…

scripta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
 
declare -A ROUTERS
ROUTERS[ruter-1-1]="backup@192.168.1.1"
ROUTERS[ruter-2-1]="backup@192.168.2.1"
ROUTERS[ruter-3-1]="backup@192.168.3.1"
DSAKEY="mt_archiver"
 
cd $(dirname $0)
 
if [ ! -d .git ]; then
	git init .
fi
 
if [ ! -f .gitignore ]; then
	echo "*.tmp" >> .gitignore
	git add .gitignore
fi
 
git add $(basename $0)
 
for ROUTER in "${!ROUTERS[@]}"; do
	ssh -i $DSAKEY ${ROUTERS[$ROUTER]} /export file=bkpcfg && (
		scp -i $DSAKEY ${ROUTERS[$ROUTER]}:bkpcfg.rsc ${ROUTER}.cfg.tmp && (
			cat ${ROUTER}.cfg.tmp | tail -n +2 > ${ROUTER}.cfg
			git add ${ROUTER}.cfg
		)
	)
done
 
git diff --cached  | cat
 
date | git commit -a -F- > /dev/null 2>&1

Potrebno je napraviti ssh par ključeva (imenovati mt_archiver, ili več u scripti dati putanju do postojećeg ključa). Podesiti pristup ruterima. I srediti listu uredjaja. Scripta razlike u odnosu na prethodnu verziju printa na stdout-u, pa ako primate mailove od crona, uvek kad se desi neki problem (nedostupan uredjaj) ili se pojavi promena u kofiguraciji na mail će vam stići diff -u 🙂

This entry was posted in linux, network and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *