A. Correct. Anyone could have written the scripts in the past and we're sure people already have their own scripts that are very similar to what is being released here. For people who know EEM and are comfortable with Tcl, these scripts are a useful reference. For those that want to learn, the scripts are a useful starting point.
Some of the scripts use other features such as IP Service Level Agreements (IP SLAs) and Enhanced Object Tracking (EOT) that can be configured from the Command Line Interface (CLI). They are very powerful, but are not often used in small networks because they can be hard to configure. The EEM scripts allow technical staff to use these features without wading through pages of online documentation. Of course, it's good to know how the commands work as well.
Q. Are these scripts supported?
A. No. Cisco is releasing these to the community as-is. This is fairly typical with programming - other companies with scripting interface often publish sample scripts.
Of course, the underlying features (EEM, IP SLA, etc.) are supported.
Q. I've made some improvements to your scripts and would like to share them. Is that possible?
A. From the
EEM Q&A: "EEMv1.0 was introduced in Cisco IOS Software Releases 12.0(26)S and 12.3(4)T. EEMv2.0 added some additional functions. EEMv2.1 followed and added the ability for users to program their own policies using Tool Command Language (Tcl). The latest version at the time this was prepared was EEMv2.2." Cisco has tested using Release 12.4(9)T and EEM version 2.3.
Q. Why are you using scripting? Aren't scripts difficult?
A. Not really, but they do require some basic programming skills and not every network engineer likes writing scripts. A script allows you to easily automate functionality based on existing commands and features. The scripting language we use is called Tcl, which stands for Tool Command Language. This is appropriate since we are controlling IOS features (tools) to get to some desired, composite behavior.
Q. Do I need to learn Tcl, or some other programming language?
A. No. The scripts are already written and are well documented. Some scripts come with a `how to' video. The scripts can be used as is. If you want to make simple changes, then all you need to know is the basic Cisco IOS command syntax. If you want to make extensive changes, learning some Tcl would be a good idea.
Q. Which platform do the scripts run on?
A. We wrote and tested on the ISR family. EEM is also available on the Cisco Catalyst 6500 Series Switch.
Q. This is cool. Will there be more scripts from Cisco?
A. Yes. Each script is documented in a way that explains what is does and how it works. Some scripts have an accompanying `how to' video. There are also presentations you can look at to understand the benefits, and what problems we had in mind when we started on this project. All this information can be found at
Q. How much do these scripts cost to use?
A. No charge. This is our way of helping build interest in EEM in the commercial market.
Q. What is the difference between an applet and Tcl script?
Applets are created using a set of CLI commands. The Applet becomes part of the Cisco IOS configuration file and is persistent across system reboots. Applets use a single "event" statement following by a number of "action" statements.
Tcl scripts cannot be built from the Cisco IOS CLI. This form of script offers a more flexible and powerful option for network administrators to apply actions on a given event occurrence. Like an Applet, a registered Tcl script is persistent across system reboots.
Q. Can I trigger a script based off a syslog message that was generated by another script?
A. No. This is done to prevent infinite recursion. If you want to trigger a policy, with another policy, you can use the application specific event detector to do so.
Q. Can I have a script trigger another script with the exception of syslog messages?
Q. Can an EEM script manually be triggered using the environment variable explicitly specified on the same "event manager run <script-name>" command line?
For example: If a script named "foobar" uses one environment variable, can it be called using the line "event manager run foobar <environment variable>"
A. No. You must explicitly use the command "event manager environment <env-name> <env-value>"
Q. Is there a way to stop all EEM scripts without having the remove them from the router configuration?
A. Yes. Use the "event manager scheduler suspend" command.
Q. What types of events are supported by EEM?
A. Embedded Resource Manager, Online Insertion and Removal (OIR), interface counters and stats, object tracking, IOS process watchdog, syslog, SNMP, counters, timer services and CLI.
Q. What do I need to do to use the scripts?
A. Download them to a router, set some environment variables from the Cisco IOS CLI, register them, again from the CLI and you're ready to begin using the scripts. This is documented in the training documents that accompany the scripts on Cisco Beyond.
Q. Can I change the output email format?
A. Yes. The email script uses environment variables for source and destination email. And you can reorder the sequence of commands. You can also add additional variables, for example for customer ID or event ID.
Q. What ports do I need to open on the firewall?
A. The email is sent on port 25 using standard SMTP. Remember that email is sent using the IP address of the interface closest to the destination email server. Make sure that there is both a route and an Access Control List (ACL) to allow this to happen.
Q. Running these scripts, what is the impact on router performance?
A. EEM is lightweight in terms of its performance requirements. On a router busy forwarding traffic at 40% CPU load, there was basically no difference in incremental processor load between running the Cisco IOS commands manually and running them from an EEM script.
Q. How long does each script take to run?
A. Run time varies. Some scripts run simple show commands and exit. Others run more complex commands (such as show tech) that take a long time to run and generate a lot of data. There are basically different classes of operation in each of the scripts, each of which takes time (excluding the time to trigger the script and other EEM internals):
1. Time to run the Cisco IOS commands
2. Time to write to flash, where the command output is stored in a temporary file
3. Time to read back from flash
4. Time to send the output email to the configured SMTP server
In the end, users should make sure that they understand what EEM scripts will do, how long operations take and how much data is generated.
The reason why we created the scripts the way we did was to show short, simple scripts as well as longer ones.
Q. Does the email output require additional WAN bandwidth?
A. This shouldn't be necessary. However, scripts can run commands (show tech) that generate significant amounts of data.
Q. What priority do the scripts run at?
A. Scripts run at MEDIUM priority. Cisco IOS command runs from a script run at the same priority.
Q. Are there any specific design recommendations?
A. Yes. These will be included in the forthcoming design guide. You can find a summary in the training documents that accompany the scripts, on Cisco Beyond.