Premessa
Un sistemista di rete previdente sa che è di vitale importanza poter contare su di un backup valido delle configurazioni relative ai vari network device. Proprio per questo motivo ho deciso di creare uno script che permettesse di automatizzare tale procedura.
Configurare un server TFTP
Occorre precisare che il backup della configurazione del nostro router Cisco SOHO 77 verrà archiviato su di un server TFTP basato su una distribuzione *buntu.
Ma veniamo al dunque. Per prima cosa installiamo il server TFTP digitando:
nightfly@nightbox:~$ sudo apt-get install tftp tftpd xinetd
A questo punto posizioniamoci sulla directory /etc/xined.d e creiamo il file tftp il cui contenuto dovrà essere:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
Come si può notare dalla direttiva server_args = /tftpboot il nostro server salverà la configurazione del router nella directory /tftpboot. Inoltre, poichè tale dir non è presente sulla nostra macchina è necessario crearla digitando:
nightfly@nightbox:/$ mkdir tftpboot
posizioniamoci all'interno di /tftpboot e creiamo il file vuoto router.cfg che conterrà la configurazione del SOHO 77:
nightfly@nightbox:/tftpboot$ sudo touch router.cfg
A questo punto lavoriamo sui permessi della directory appena creata e del suo contenuto:
nightfly@nightbox:/$ sudo chmod 777 -R tftpboot
nightfly@nightbox:/$ sudo chown nobody tftpboot
Riavviamo xinetd digitando:
nightfly@nightbox:/$ sudo /etc/inet.d/xinetd stop
nightfly@nightbox:/$ sudo /etc/inet.d/xinetd start
Infine, verifichiamo che il nostro server TFTP sia in ascolto digitando:
nightfly@nightbox:/$ sudo nmap -sU localhost
se l'output sarà simile al seguente:
69/udp open|filtered tftp
vuol dire che il server risulta effettivamente in ascolto.
Script per il backup automatico della configurazione relativa al SOHO 77
Prima di mostrarvi lo script, è necessario installare un tool indispensabile al suo funzionamento. Tale tool prende il nome di expect:
nightfly@nightbox:/$ sudo apt-get install expect
Creiamo ora il file backup_conf_soho77 il cui contenuto dovrà essere il seguente:
#!/usr/bin/expect
set password1 "<pass1>"
set password2 "<pass2>" #necessaria nel caso in cui la password per l'enable sia diversa da quella per l'accesso via telnet
spawn telnet <IP del router>
expect "Password:"
send "$password1r"
expect ">"
send "enar"
expect "Password:"
send "$password2r"
expect "#"
send "copy system:running-config tftp://<IP del server TFTP>/router.cfgr"
expect "?"
send "r"
expect "?"
send "r"
expect "#"
send "exitr"
expect eof
NB: prima della r all'interno delle virgolette ci vuole il backslash, in modo da inviare al router un ritorno a capo (nello script non appare in quanto viene automaticamente skippato da myblog per ragioni di sicurezza).
Rendiamo lo script eseguibile mediante il comando:
nightfly@nightbox:~$ sudo chmod +x backup_conf_soho77
e successivamente spostiamolo nella directory /usr/bin:
nightfly@nightbox:~$ sudo mv backup_conf_soho77 /usr/bin
Adesso non ci resta che "schedulare" l'esecuzione dello script. Per fare questo è sufficiente inserire una entry in /etc/crontab:
00 00 * * * root backup_conf_router
In particolare, ogni mezzanotte verrà eseguito il backup della configurazione mediante lo script descritto in precedenza.
Riavviamo cron per rendere effettive le nuove impostazioni:
nightfly@nightbox:~$ sudo /etc/init.d/cron restart
ed abbiamo finito.
A presto.