07-17-2013 03:27 PM
Hello Community,
I've converted an EEM to Tcl using the tool on this site. However, I'm getting the following error:
R3(config)#event manager policy OjectTracking.tcl
EEM Register event failed: Error empty reg spec, policy does not start with EEM registration commands.
EEM configuration: failed to retrieve intermediate registration result for policy OjectTracking.tcl
Can someone please take a little look at the script and let me know what's wrong?
::cisco::eem::event_register_track tag SLA1 1 state down
::cisco::eem::event_register_track tag SLA2 2 state down
::cisco::eem::event_register_track tag SLA3 3 state down
::cisco::eem::trigger {
::cisco::eem::correlate event SLA1 or event SLA2 or event SLA3
}
#
# This EEM tcl policy was generated by the EEM applet conversion
# utility at http://www.marcuscom.com/convert_applet/
# using the following applet:
#
# event manager applet object
# event tag SLA1 track 1 state down
# event tag SLA2 track 2 state down
# event tag SLA3 track 3 state down
# trigger
# correlate event SLA1 or event SLA2 or event SLA3
# action 1.0 syslog msg "Track $_event_tag1 is down"
#
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
array set arr_einfo [event_reqinfo]
action_syslog msg "Track $_event_tag1 is down"
Cheers
Carlton
07-18-2013 01:22 PM
Hi Joseph,
Thanks for getting back to me, I do believe the device supports ED:
R3#show event manager version
Embedded Event Manager Version 3.10
Component Versions:
eem: (v310_throttle)4.1.23
eem-gold: (v310_throttle)1.0.7
eem-call-home: (v310_throttle)1.0.6
Event Detectors:
Name Version Node Type
application 01.00 node0/0 RP
syslog 01.00 node0/0 RP
track 01.00 node0/0 RP
resource 01.00 node0/0 RP
routing 02.00 node0/0 RP
cli 01.00 node0/0 RP
counter 01.00 node0/0 RP
interface 01.00 node0/0 RP
ioswdsysmon 01.00 node0/0 RP
none 01.00 node0/0 RP
oir 01.00 node0/0 RP
snmp 01.00 node0/0 RP
snmp-notification 01.00 node0/0 RP
timer 01.00 node0/0 RP
ipsla 01.00 node0/0 RP
snmp-object 01.00 node0/0 RP
test 01.00 node0/0 RP
config 01.00 node0/0 RP
env 01.00 node0/0 RP
gold 01.00 node0/0 RP
nf 01.00 node0/0 RP
rpc 01.00 node0/0 RP
R3#
07-18-2013 01:28 PM
Paste the exact output when you "more" the file as you have copied it to the router.
07-18-2013 01:32 PM
07-18-2013 01:34 PM
You need to upload the file as a plain ASCII text file. I'm not sure how you're transferring it to the router, but that's clearly wrong.
07-18-2013 01:45 PM
Joseph,
I've uploaded the file using tftp server.
I've successfully uploaded other .tcl files from this site.
I don't think I'm doing anything different....
07-18-2013 01:47 PM
I don't know what more to tell you. This is a hex dump of an ASCII file, not the raw file itself. You need to get the raw ASCII file loaded on flash.
07-18-2013 01:55 PM
Hi Joseph,
I'll play around and see what I can do.
Thanks for your help anyway mate.
07-18-2013 01:57 PM
Joseph,
Just so you know the file is being loaded onto disk0:
07-18-2013 02:00 PM
Joseph,
Do you think you could convert it for me - just in case I'm converting incorrectly?
Cheers
07-18-2013 02:04 PM
I just downloaded the attached file you posted, copied it to my router using TFTP, and registered it. It worked. It's not a question of your file, but how it appears on flash. Either how you're saving it locally or how you're transferring it is not preserving the original structure.
07-18-2013 02:27 PM
Success!
Joseph,
You were correct. The problem is the way I copy the file to the tftp server.
I simply extracted object4.tcl.zip, you tested in the previous post and I got no errors registering.
Now got to try and test it out.
Cheers mate.
07-18-2013 02:47 PM
Hi Joseph,
The problem I have now is that a need environment variable for $_event_tag1. But that variable represents, SLA1 or SLA2 or SLA3
*Jul 18 22:28:37.643: %TRACKING-5-STATE: 2 ip sla 2 reachability Up->Down
can't read "_event_tag1": no such variable
while executing
"action_syslog msg "Track $_event_tag1 is down""
invoked from within
"$slave eval $Contents"
(procedure "eval_script" line 7)
invoked from within
"eval_script slave $scriptname"
invoked from within
"if {$security_level == 1} { #untrusted script
interp create -safe slave
interp share {} stdin slave
interp share {} stdout slave
..."
07-18-2013 03:08 PM
Multi-event is different in Tcl. You have to test for each tag:
array set mar_einfo [event_reqinfo_multi]
set tag {}
foreach tag [list "SLA1" "SLA2" "SLA3"] {
if { [info exists mar_einfo($tag)] } {
break
}
}
action_syslog msg "Track $tag is down"
07-18-2013 03:14 PM
Wow!
Where would I add that to the Tcl?
Seriously, if its too much trouble just point me in the right direction and I'll try and figure it out - you've helped me a great deal...
07-18-2013 03:20 PM
Joseph,
I got it to work.
You're a genius! Seriously, I was about to give up.
Thank you so much mate.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide