[c-nsp] Cisco - TCL script document

Cisco Boy firstccie at gmail.com
Thu Sep 7 19:46:34 EDT 2006


Hi Guys,
Just want to share this document with you.

At some point in your career as an administrator, it's a good bet that 
you've used a script to automate some common task. Maybe you've written 
scripts in your Linux bash shell 
<http://downloads.techrepublic.com.com/5138-10877-5827301.html> or with 
Windows Scripting Host (WSH) 
<http://techrepublic.com.com/5100-10879_11-5746352.html>.

However, up until recently, there wasn't a scripting language for Cisco 
routers; there were some available tools, but no open scripting 
language. Cisco changed this with Cisco IOS 12.3(2)T by adding the Tool 
Command Language (TCL) to the Cisco IOS. Let's take a closer look.

Pronounced as "tickle," TCL is a powerful but easy way to learn dynamic 
scripting language. It's an open programming language developed by John 
Ousterhout.

While the scope of this article prevents us from exploring TCL in 
detail, let's take a look at the basics of using TCL as well as some 
examples. You can find more information on TCL programming and its 
syntax by checking out its Wikipedia entry 
<http://en.wikipedia.org/wiki/Tcl>.

Before trying to use TCL on your router, make sure that you're using 
release 12.3(2)T, 12.2(25)S, or greater. To determine whether your 
router includes TCL, enter the /tclsh/ command in Global Configuration 
Mode. Here's an example:

Router# *tclsh*

If the router does have TCL, the prompt will look like the following:

Router(tcl)#

If the router doesn't include TCL, it will think you're trying to Telnet 
to a host called tclsh, and it will try to perform a DNS lookup on that 
host.

Once you're at the IOS TCL prompt, enter the /tclq/ command to exit, as 
shown below:

Router(tcl)# *tclq*
Router#

Now, let's look at some examples of using TCL. To run a User EXEC Mode 
command on a Cisco router, you would begin each command with /exec/ and 
place the actual command in quotes. Here's an example:

Router(tcl)# exec "show version"

To use a Global Configuration Mode command, begin the command with 
/ios_config/*. *Then, put the Global Configuration Mode command in 
quotes, following with the sub-command in quotes. Don't forget that you 
must put the command and sub-commands on the same TCL command line, or 
they won't work. Here's an example:

Router(tcl)# ios_config "interface serial0/0" "ip address 1.1.1.1 255.0.0.0"

These are two simple examples of using TCL with a single command. But 
once you've learned the TCL scripting language, you can write much more 
complex scripts.

For example, you could write a script to ping a list of IP addresses, or 
you could write one to filter output from commands and format it to your 
liking. You could even write a script to send an e-mail message from a 
router.

Once you understand the basics of TCL in the IOS, you'll quickly find 
that it's easier to edit TCL scripts on the desktop and transfer them to 
the router with a TFTP server (such as tftpd32.exe 
<http://tftpd32.jounin.net/>), rather than manually entering scripts at 
the router.

TCL on Cisco IOS routers is a relatively new feature, but this feature 
will likely grow in popularity over time as admins become more familiar 
with it. For more information, check out the Cisco IOS Scripting with 
Tcl documentation 
<http://www.cisco.com/en/US/products/sw/iosswrel/ps5207/products_feature_guide09186a00801a75a7.html>.

Cheers!
CiscoBoy




More information about the cisco-nsp mailing list