sabato 19 agosto 2017

Automatizzare il backup dei log da un access point OpenWrt


Ho una decina di ap con a bordo OpenWrt dislocati in diverse posizioni, la più vicina a 10 metri, la più distante a 23 km. Siccome questi ap offrono accesso ad internet ai clienti, avevo la necessità di tenere i log.
Ho deciso di tenere i log giorno per giorno, dopo aver provato millemila cose , ho seguito la filosofia KISS usando quello che c'è di default in ogni installazione, ovvero dnsmasq e logread .

C'è un piccolo scriptino, chiamato con grande slancio di fantasia "dsnmasqrotate.sh" che salva ogni giorno i log :

/etc/init.d/dnsmasq stop
*ferma dnsmasq
tar -zcvf /mnt/usb/dnslog-`date +"%F-%H_%M"`.txt.tar /mnt/usb/dnslog.txt
*comprime il file, lo nomina con la data odierna, lo sposta su chiavetta usb
rm /mnt/usb/dnslog.txt
*cancella il file di log del giorno appena passato
/etc/init.d/dnsmasq start
* fa ripartire dnsmasq

A questo punto, però, mi si è posto il problema di tenere copia delle chiavette e dei loro log.
Si che le chiavette sono da 8gb, quindi spazio in abbondanza, ma possono anche essere rubate o rotte.

A questo punto, entra in gioco WinScp, nulla più che un client per il protocollo SCP per Windows.

Durante l'installazione viene creata una coppia di chiavi usando PuTTYgen (già integrato in WinScp), quella pubblica resta sul server SSH (che a me non interessa) mentre quella privata sulla macchina di installazione. Con questa chiave si possono lanciare delle connessioni remote via SCP, la chiave è un qualcosa tipo questo :

sh-rsa 2048 ab:02:4b:30:60:42:5c:08:ce:2b:70:4d:2a:24:0d:52

Primo passaggio : file .bat
Invoca winspc e gli dice che deve andare ad eseguire uno script che si trova in uno share di rete:

C:\Programmi\WinSCP\winscp.com /script="\\mionas\miacartella\miasottocartella\backup.txt"

Secondo passaggio : elenco di comandi per WinSCP
Questo è il cuore di tutto, si dice a WinScp di aprire una connessione SCP con il nome utente "user" e la password "password" verso l'host 192.168.xxx.xxx , gli passa la chiave privata e gli dice che deve sincronizzare i files contenuti in /mnt/usb con i files contenuti in nello share di rete \\mionas\miacartella\miasottocartella e poi chiudere la connessione.

open scp://user:password@192.168.XXX.XXX -hostkey="sh-rsa 2048 ab:02:4b:30:60:42:5c:08:ce:2b:70:4d:2a:24:0d:52"
synchronize local \\mionas\miacartella\pincopallo /mnt/usb
close

A questo punto, una comunissima azione programmata di Windows esegue lo script tutti i giorni ad una data ora, in questo modo i log sono in backup, sani e salvi.

Terzo passaggio : avvio automatico
Da interfaccia web andare in System - Startup , in Local Startup inserire le seguenti righe:

sh /root/dnsmasqrotate.sh
/sbin/logread -f >/mnt/usb/logread_-`date +"%F-%H_%M"`.txt &
exit 0

Qui gli si dice che all'avvio deve far girare dnsmasqrotate.sh e logread andrà a creare un file di testo su chiavetta usb appendendoci al nome la data e l'ora.
Settimanalmente salvo e comprimo il tutto e li sposto da un'altra parte, su un'altro NAS. Dopo un paio di mesi, poi, sempre via SCP, provvedo a svuotare un pochino la cartella /mnt/usb.

Nessun commento:

Posta un commento

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre