cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1942
Views
0
Helpful
1
Replies

Help with EEM TCL / CLI scripting for re-direction/wccp counters

sjneary
Level 1
Level 1

Being new with EEM scripting I wanted to see if I was on the right track and get some help to finish my idea.

Our problem I am trying to fix is our remote sites utilize pairs of Cat3650's for some routing and WCCP redirection.  We are encountering ACL denial issues causing slow down and access issues.  The fix for the issue we remove the WCCP service groups to break peering with our wan optimizers and re-insert the configuration thus re-establishing peering and restoring service.

My idea is to use a TCL scipt on a watchdog timer to parse the "sh ip wccp | inc denied (or unassign)" output for denial and unassignable error counters.  If a counter is found I wanted to create a syslog message that would then kick off a simple EEM CLI script to remove the service groups, wait 10 seconds, then re-add the service groups.  Please point me in the right direction if I am off track as I am not sure if I can use the EEM CLI for all this or since I want to retreive specific info from the sh ip wccp output if I do need to utilize TCL.  I am also unsure if the "total denied" ascii string pulled via the "sh ip wccp | inc denied" will cause issues when attempting to just pull the counter information.

sh ip wccp | inc Denied Red

        Total Packets Denied Redirect:       0

        Total Packets Denied Redirect:       0

Script thus far :

TCL

if [catch {context_retrieve "EEM_WCCP_ERROR_COUNTER" "count"} result] {

set wccpcounter 0

} else {

set wccpcounter $result

} if [catch {cli_open} result] {

error $result

} else {

array set cli $result

} if [catch {cli_exec $cli(fd) "show ip wccp | incl Denied"} result] {

error $result

} else {

set cmd_output $result

}

set count ""

catch [regexp {receive ([0-9]+),} $cmd_output} ignore count]

set count

set diff [expr $count - $wccpcounter]

if {$diff != 0} {

action_syslog priority emergencies msg "WCCP counters showing incremental Denied packet counts"

}

if [catch {cli_close $cli(fd) $cli(tty_id)} result] {

error $result

}

context_save EEM_WCCP_ERROR_COUNTER count

CLI

event manager applet WCCP_COUNTER_WATCH

event syslog priority emergencies pattern "WCCP counters showing incremental Denied packet counts"

action 001 cli command "enable"

action 002 cli command "config t"

action 003 cli command "no ip wccp 61"

action 004 cli command "no ip wccp 62"

action 005 wait 10

action 006 cli command "ip wccp 61"

action 007 cli command "ip wccp 62"

action 008 wait 15

action 009 cli command "clear ip wccp"

action 010 cli command "end"

Thanks for all the help

1 Reply 1

Joe Clarke
Cisco Employee
Cisco Employee

This won't work as EEM cannot intercept its own syslog messages.  However, I'm not sure why you need this form of IPC anyway.  Why not just make the Tcl script perform the needed CLI commands?

And, yes, you could use all applets here.  But since you've written the hard stuff in Tcl already, it might be best just to add the missing calls to reconfigure WCCP to that script.

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: