I need to change the configuration of a remote (6 hours' drive) client's Cisco 871 (IOS 12.4.15T) from my location because of some new internet service at his location. To be more precise, I need to change the default route, ip address of the outside interface (Fa4) and disable the PPPoE setup there. Unfortunately, doing any of this will (obviously) break the connection to the router. I do not have an out-of-band management modem set up (I know, I know).

Is there any way to enter the commands I need to have run and have them execute one after the other, from a file on flash:? I have never tried anything like that before. Essentially a DOS-style batch file is exactly what I need. Nothing like it seems to be out there except using kron to execute CLI commands, but that is specified here as only taking EXEC commands, not configuration ones. Is there hope, or do I travel?

6 Answers 6


I believe it's possible to copy a file from flash: to running-config, but I am not 100% sure. You may be better off copying the existing running-config to a known-good-startup, copying the config you want on top of startup-config, then reload the router (with, ideally, somneone on site who can be walked through a password-recovery-style recovery, should the new config be broken).

Alternatively, if the relevant config can be comfortably fit in a single TCP frame, you could write some code to issue a reload in 10 command, then a config t and finish off with all relevant config commands, separated by CR NL, in a single frame.

Edit: Then either log on to the router manually or send a second frame with enough commands in it to cancel the reload (the relevant IOS command is reload cancel).

  • As you suspect, the best way to execute a number of commands at once is to merge them into the running-config using copy URI running-config. Naturally, preceded with reload in 10 just in case it doesn't work as expected.
    – MikeyB
    Commented Jan 31, 2011 at 16:09

You can do this with a tclsh macro.

Create macro

router(tcl)# set foo {
+>conf t
+>int f0/1
+>ip addr.....
+>no ip route .....
+>ip route .....

Execute and quit tclsh:

router(tcl)#eval $foo

Test this in a lab to make yourself familiar with tclsh in Cisco routers.

  • That is awesome.
    – atroon
    Commented Jan 31, 2011 at 16:11
  • Outstanding solution.
    – nutcase
    Commented May 20, 2022 at 18:50

If you have a tftp server that is accessible to the router, you can edit your configuration there, and then load the configuration from the tftp server.

Just be very careful, and have a backup plan in place. If anything goes wrong, you're going to be offline and need to visit yourself, or find someone else local to be your hands.


Do you have telnet access to the router? You can telnet to the router, copy the running config to notepad, make the needed changes, and paste the contents of notepad back into the router from config mode and that should do it.

You may lose your telnet connection temporarily but the router will continue pasting the uploaded config and assuming that the new config works you'll be able to telnet back in and save it to the startup config.


If you're on a recent IOS, you can use IOS.sh. Once you do term shell, you can separate commands by semicolons on one line, and they'll be run sequentially, just like in bash or similar.

Here's an example one-liner, where I changed out a route:

LAB-6807#show run | incl 111.111
ip route Loopback0
LAB-6807#term shell
LAB-6807#conf t; no ip route Loopback0; ip route Null0; end
Enter configuration commands, one per line.  End with CNTL/Z.
*May 18 22:33:27.772: %SYS-5-CONFIG_I: Configured from console by hunter on vty1 (x.x.x.x)
LAB-6807#show run | incl 111.111
ip route Null0

You can use configure replace to rollback changes.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .