You need to generate hundreds of router configuration files for a big network rollout.
When building a large WAN, you will usually configure the remote branch routers similarly according to a template. This is a good basic design principle, but it also makes it relatively easy to create the router configuration files. Example 1-1 uses a Perl script to merge a CSV file containing basic router information with a standard template file. It takes the CSV file as input on STDIN.
#!/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 $_; } }
This Perl script is a simplified version of much longer scripts that we have used to create the configuration files for some very large networks. After loading these configuration files into the routers, we shipped them to the remote locations along with a hard copy of the configuration in case there were problems during shipment. The technician installing the router could then simply connect the appropriate cables and power on the router. He wouldn't even need to log on to the router's console unless there were unexpected problems. This methodology can save hundreds of hours in a network installation project.
The script does a relatively simple merge function and expects the input data in CSV format on STDIN. For an input file named RTR-DATA.CSV, run the script as follows:
Freebsd% create-configs.pl < RTR-DATA.CSV
The input file in this case might look something like this:
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,
Using a CSV file like is convenient because you can keep track of the entire network in a spreadsheet and create a CSV file containing the data you need for the router configurations.
The template configuration needs to include unique variable names that the script will replace with values from the CSV file. For example, the template configuration file might look like this:
! 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
The script expects to find this template file located in the current directory with the name rtr-template.txt by default, but you can change this easily by modifying the variable called template_file_name in the script.
Naturally, your router templates will not look like this one, and your CSV file will almost certainly contain other data that is important to your network. This script will probably need significant local modification every time you use it on a new network, but the amount of time required to modify the script is usually far less than the amount of time needed to create all of the configuration files by hand.
The output of this script will be a series of files whose names are the same as the router names, but with .txt added to the end. You can then use a terminal emulator to cut and paste the router configuration files into the routers prior to shipping them to their destinations. Always remember to save the configuration to the router's NVRAM before powering it off:
Router1#copy running-config startup-config
Top |