Generare centinaia di file di configurazione per i router cisco
Quando si costruisce una grande WAN, di solito bisognerebbe configurare i router filiali in modo simile in base a un modello di progettazione. L’esempio utilizza uno script in Perl per unire un file CSV contenente informazioni di base con un file di modello standard. Prende il file CSV come input su STDIN.
Esempio create-configs.pl
#!/usr/local/bin/perl # $template_file_name="rtr-template.txt"; while(<>) { ($location, $name, $lo0ip, $frameip, $framedlci, $eth0ip, $x) = split (/,/); open(TFILE, "< $template_file_name") || die "config template file $template_file_name: $!\n"; $ofile_name = $name . ".txt"; open(OFILE, "> $ofile_name") || die "output config file $ofile_name: $!\n"; while (<TFILE>) { s/##location##/$location/; s/##rtrname##/$name/; s/##eth0-ip##/$eth0ip/; s/##loop0-ip##/$lo0ip/; s/##frame-ip##/$frameip/; s/##frame-DLCI##/$framedlci/; printf OFILE $_; } }
Questo script Perl è una versione semplificata di script molto più lunga che abbiamo utilizzato per creare i file di configurazione per alcune reti molto grandi. Dopo aver caricato questi file di configurazione nei router, li abbiamo spediti alle postazioni remote insieme ad una copia cartacea della configurazione nel caso in cui vi siano dei problemi durante la spedizione. Il tecnico adetto all’installazione dei routers potrebbe quindi semplicemente collegare i cavi appropriati e accendere il router. Non avrebbe nemmeno bisogno di accedere alla console del router a meno che non ci siano problemi inaspettati. Questa metodologia può salvare centinaia di ore in un progetto.
Lo script ha una fusione relativamente semplice e si aspetta che i dati di input in formato CSV su STDIN. Per un file di input denominato RTR-data.csv, eseguire lo script come segue
linux% create-configs.pl < RTR-DATA.CSV
Il file di input, in questo caso potrebbe essere simile a questa
Toronto, Router1, 172.25.15.1, 172.25.16.6, 101, 172.25.100.1, Boston, Router2, 172.25.15.2, 172.25.16.10, 102, 172.25.101.1, San Francisco, Router3, 172.25.15.3, 172.25.16.14, 103, 172.25.102.1,
Utilizzando un file CSV è conveniente, perché è possibile tenere traccia di tutta la rete in un foglio di calcolo e creare un file CSV contenente i dati necessari per le configurazioni del router.La configurazione del modello deve includere nomi univochi delle variabili che lo script andrà a sostituire con i valori del file CSV. Ad esempio, il file di configurazione del modello potrebbe somigliare a questo:
! version 12.1 service timestamps debug datetime msec service timestamps log datetime msec service password-encryption ! hostname ##rtrname## ! enable password cisco enable secret cisco ! interface Loopback0 ip address ##loop0-ip## 255.255.255.255 ! interface Serial0/0 description Frame-Relay Circuit no ip address encapsulation frame-relay ip route-cache policy frame-relay lmi-type ansi no shutdown ! interface Serial0/0.1 point-to-point ip address ##frame-ip## 255.255.255.252 frame-relay interface-dlci ##frame-DLCI## ! interface FastEthernet0/1 description User LAN Segment ip address ##eth0-ip## 255.255.255.0 no shutdown ! router eigrp 99 network 172.25.0.0 ! snmp-server location ##location## ! line con 0 password cisco login transport input none line aux 0 password cisco login line vty 0 4 password cisco login transport input telnet ! end
Lo script si aspetta di trovare il file di modello che si trova nella directory corrente con il nome RTR-template.txt ma è possibile modificare questo file facilmelmente editando la variabile template_file_name chiamata nello script.
Naturalmente a seconda dei modelli dei router bisognerà cambiare la configurazione. Questo script avrà probabilmente bisogno di una notevole modifica ogni volta che si utilizza su una nuova rete, ma la quantità di tempo necessario per modificare lo script è di solito molto meno rispetto alla quantità di tempo necessario per creare tutti i file di configurazione a mano.
L’output di questo script sarà una serie di file cui nomi sono gli stessi dei router, ma con. Txt aggiunto alla fine. È quindi possibile utilizzare un emulatore di terminale per tagliare e incollare i file di configurazione nei router prima di spedirle alle loro destinazioni. Ricordarsi sempre di salvare la configurazione NVRAM del router prima di spegnerlo:
Router1#copy running-config startup-config