Everyone dealing with IOS-XR will know that you have the option of using an editor to edit your RPL (Routing Policy Language) configuration. As of 3.9.1 the available editors are the following:
- nano
- emacs
- vim (enhanced version of vi)
The same editors are also available for editing any text file that exists on your router's filesystem. In order to be able to use them, you just have to enter ksh mode by using the hidden "run" command. "run" is referenced briefly on CCO, but its usage is discouraged for everyday operation.
WARNING : Everything below this line is being done at your own risk. You probably don't want to experiment on a production network and you'd better use this functionality only under supervision of Cisco Support.
RP/0/RSP0/CPU0:asr9k#run # pwd /disk0a:/usr
QNX kernel:
# uname -a QNX node0_RSP0_CPU0 6.4.0 2010/01/14-11:12:50PST asr9k ppcbe
All filesystem devices can be found under the root directory:
# cd / # ls -al | grep ":$" ls: Operation not supported (./nvram-raw:) lrwxrwxrwx 1 0 0 11 Jun 14 22:19 bootflash -> /bootflash: drwxrwxrwx 3 0 0 76 Jan 01 1970 bootflash: lrwxrwxrwx 1 0 0 14 Jun 14 22:19 compactflash -> /compactflash: drwxrwxrwx 3 0 0 16384 Sep 15 22:08 compactflash: drwxrwxrwx 2 0 0 668 Jan 01 1970 configflash: lrwxrwxrwx 1 0 0 7 Jun 14 22:19 disk0 -> /disk0: drwxrwxr-x 35 0 0 4096 Sep 26 21:50 disk0: drwxrwxr-x 6 0 0 4096 Feb 25 2010 disk0a: lrwxrwxrwx 1 0 0 7 Jun 14 22:19 disk1 -> /disk1: drwxrwxr-x 35 0 0 4096 Sep 26 21:50 disk1: drwxrwxr-x 4 0 0 4096 Apr 08 2009 disk1a: lrwxrwxrwx 1 0 0 22 Sep 26 22:07 dumper_bootflash: -> /qsm/dumper_bootflash: lrwxrwxrwx 1 0 0 25 Sep 26 22:07 dumper_compactflash: -> /qsm/dumper_compactflash: lrwxrwxrwx 1 0 0 24 Sep 26 22:07 dumper_configflash: -> /qsm/dumper_configflash: lrwxrwxrwx 1 0 0 18 Sep 26 22:07 dumper_disk0: -> /qsm/dumper_disk0: lrwxrwxrwx 1 0 0 19 Sep 26 22:07 dumper_disk0a: -> /qsm/dumper_disk0a: lrwxrwxrwx 1 0 0 18 Sep 26 22:07 dumper_disk1: -> /qsm/dumper_disk1: lrwxrwxrwx 1 0 0 19 Sep 26 22:07 dumper_disk1a: -> /qsm/dumper_disk1a: lrwxrwxrwx 1 0 0 21 Sep 26 22:07 dumper_harddisk: -> /qsm/dumper_harddisk: lrwxrwxrwx 1 0 0 22 Sep 26 22:07 dumper_harddiska: -> /qsm/dumper_harddiska: lrwxrwxrwx 1 0 0 22 Sep 26 22:07 dumper_harddiskb: -> /qsm/dumper_harddiskb: lrwxrwxrwx 1 0 0 20 Sep 26 22:07 dumper_lcdisk0: -> /qsm/dumper_lcdisk0: lrwxrwxrwx 1 0 0 21 Sep 26 22:07 dumper_lcdisk0a: -> /qsm/dumper_lcdisk0a: lrwxrwxrwx 1 0 0 18 Sep 26 22:07 dumper_nvram: -> /qsm/dumper_nvram: lrwxrwxrwx 1 0 0 16 Jun 14 22:19 ftp: -> /qsm/dev/fs/ftp: drwxrwxr-x 14 0 0 4096 Sep 26 21:49 harddisk: drwxrwxr-x 4 0 0 4096 Aug 25 13:11 harddiska: drwxrwxr-x 5 0 0 4096 Apr 08 2009 harddiskb: lrwxrwxrwx 1 0 0 7 Sep 26 22:07 install -> /disk0: lrwxrwxrwx 1 0 0 7 Sep 26 22:07 install_read -> /disk0: drwxrwxrwx 0 0 0 1 Jan 01 1970 nvram: lrwxrwxrwx 1 0 0 16 Jun 14 22:19 rcp: -> /qsm/dev/fs/rcp: lrwxrwxrwx 1 0 0 17 Jun 14 22:19 tftp: -> /qsm/dev/fs/tftp:
i.e. in order to edit the admin configuration using a much easier way, you just have to move to the correct path and edit the appropriate file (or your can supply the whole path in the same line).
# cd disk0: # cd config/admin # pwd /disk0:/config/admin # ls -al total 20 drwxrwxrwx 2 0 0 4096 Sep 15 22:09 . drwxr-xr-x 6 0 0 4096 Aug 25 13:35 .. -rw-r--r-- 1 0 0 416 Sep 15 22:09 admin.bin -rwx------ 1 0 0 307 Sep 14 19:06 admin.cfg -rw-r--r-- 1 0 0 416 Sep 15 22:09 admin_nonlr.bin -rwx------ 1 0 0 307 Sep 15 22:09 last_used.cfg
Now, you can use nano to edit a file:
# nano admin.cfg
Or you can use emacs, which has some "nice" drop-down menus:
# emacs admin.cfg
Perl is also available, if you want to experiment with scripting...
# perl -v This is perl, v5.6.0 built for 4k- Copyright 1987-2000, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5.0 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using `man perl' or `perldoc perl'. If you have access to the Internet, point your browser at http://www.perl.com/, the Perl Home Page.
...but i haven't tried to run complex scripts yet.
# cat test.pl for ($count = 10; $count >= 1; $count--) { print "$count\n"; } print "Ignition!\n"; # perl test.pl 10 9 8 7 6 5 4 3 2 1 Ignition!
The included perl modules are limited and i don't know if it's possible to add external ones.
# pwd /pkg/lib/perl # ls -alR .: total 156 -rwxrwxrwt 1 0 0 10167 Sep 07 21:46 AutoLoader.pm dr-xr-xr-x 0 0 0 1 Jan 01 1970 Carp -rwxrwxrwt 1 0 0 4166 Sep 07 21:46 Carp.pm -rwxrwxrwt 1 0 0 28050 Sep 07 21:46 DynaLoader.pm -rwxrwxrwt 1 0 0 10377 Sep 07 21:46 Exporter.pm dr-xr-xr-x 0 0 0 1 Jan 01 1970 Sys -rwxrwxrwt 1 0 0 3591 Sep 07 21:46 XSLoader.pm dr-xr-xr-x 0 0 0 1 Jan 01 1970 cisco -rwxrwxrwt 1 0 0 2479 Sep 07 21:46 strict.pm -rwxrwxrwt 1 0 0 2746 Sep 07 21:46 vars.pm dr-xr-xr-x 0 0 0 1 Jan 01 1970 warnings -rwxrwxrwt 1 0 0 14333 Sep 07 21:46 warnings.pm ./Carp: total 17 -rwxrwxrwt 1 0 0 8632 Sep 07 21:46 Heavy.pm ./Sys: total 8 -rwxrwxrwt 1 0 0 3719 Sep 07 21:46 Hostname.pm ./cisco: total 2 dr-xr-xr-x 0 0 0 1 Jan 01 1970 fm dr-xr-xr-x 0 0 0 1 Jan 01 1970 lib ./cisco/fm: total 23 -rwxrwxrwt 1 0 0 3332 Sep 07 21:46 perl_fm_action.pm -rwxrwxrwt 1 0 0 4301 Sep 07 21:46 perl_fm_event.pm -rwxrwxrwt 1 0 0 765 Sep 07 21:46 perl_fm_misc.pm -rwxrwxrwt 1 0 0 2558 Sep 07 21:46 perl_fm_util.pm ./cisco/lib: total 5 -rwxrwxrwt 1 0 0 2304 Sep 07 21:46 smtp_lib.pm ./warnings: total 2 -rwxrwxrwt 1 0 0 794 Sep 07 21:46 register.pm
Note : Since ksh gives you a kind of low level access, you have to be very careful with it.
excellent source of info which is not readliy avaiable anywhere. Please more of these.
ReplyDeleteHi. There is no chmod command. How to make a file executable?
ReplyDeleteHello There,
ReplyDeleteThank you so much great post.