06-18-2013 05:45 AM
Hello,
I am trying to implement the BGP Service Diagnostics TCL scripts found at: https://supportforums.cisco.com/docs/DOC-19393
Specfically, I want to receive syslog and/or email notifications when a BGP neighbor goes down.
I am following the guide located at:
http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6555/ps9424/white_paper_cisco_ios_service_design_bgp_osp_qos.html
I am performing the manual implementation (no EMM), and get to the point of setting the variables like so:
tclsh flash:/svc-diag/sdiag_bgp.tcl bgp_neighbor_loss.tcl syslog FALSE FALSE flash:/svc-diag flash:/user_library
When I test the script by pulling the interface, and therefore losing the BGP adjacency, I get the following syslog messages:
*Jun 18 13:02:01.846: %BGP-5-ADJCHANGE: neighbor X.X.X.X Down Interface flap
*Jun 18 13:02:02.182: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: invalid command name "exec_show_commands"
*Jun 18 13:02:02.182: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: while executing
*Jun 18 13:02:02.182: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: "exec_show_commands "show ip bgp neighbor $ip_address | i Last reset""
*Jun 18 13:02:02.182: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: invoked from within
*Jun 18 13:02:02.182: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: "$slave eval $Contents"
*Jun 18 13:02:02.182: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: (procedure "eval_script" line 7)
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: invoked from within
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: "eval_script slave $scriptname"
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: invoked from within
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: "if {$security_l
BGP-LAB-INTERNevel == 1} { #untrusted script
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: interp create -safe slave
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: interp share {} stdin slave
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: interp share {} stdout slave
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: ..."
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: (file "system:/lib/tcl/base.tcl" line 50)
*Jun 18 13:02:02.186: %HA_EM-6-LOG: bgp_neighbor_loss.tcl: Tcl policy execute failed: invalid command name "exec_show_commands"ET_GW(config-if)#
Here is the output of of show flash:
BGP-LAB-INTERNET_GW#sh flash:
-#- --length-- -----date/time------ path
1 0 Jun 13 2013 18:46:58 +00:00 user_library
2 131 Jun 13 2013 18:52:06 +00:00 user_library/email_template
3 16441 Jun 13 2013 18:52:14 +00:00 user_library/userlib.tcl
4 8533 Jun 13 2013 18:52:32 +00:00 user_library/diag_lib.tcl
5 4280 Jun 13 2013 18:52:40 +00:00 user_library/sdiag_lib.tcl
6 1713 Jun 13 2013 18:52:50 +00:00 user_library/bgp_lib.tcl
7 2959 Jun 13 2013 18:52:56 +00:00 user_library/tclIndex
8 13484 Jun 13 2013 18:53:06 +00:00 user_library/lib.tcl
9 131 Jun 13 2013 18:51:46 +00:00 copy
10 36720544 Jun 3 2013 16:09:14 +00:00 c3825-advipservicesk9-mz.124-13.bin
11 0 Jun 13 2013 15:48:48 +00:00 svc-diag
12 16331 Jun 13 2013 18:41:58 +00:00 svc-diag/sdiag_bgp.tcl
13 10110 Jun 13 2013 18:42:44 +00:00 svc-diag/bgp_neighbor_loss.tcl
14 22425 Jun 13 2013 18:42:54 +00:00 svc-diag/bgp_neighbor_formation.tcl
15 20987 Jun 13 2013 18:43:06 +00:00 svc-diag/bgp_neighbor_route.tcl
16 5900 Jun 13 2013 18:43:42 +00:00 svc-diag/sdiag_bgp_display.tcl
17 10741 Jun 13 2013 18:44:40 +00:00 svc-diag/sdiag_bgp_undeploy.tcl
18 6085 Jun 13 2013 18:44:58 +00:00 svc-diag/collectEmailParameters.tcl
27103232 bytes available (36909056 bytes used)
Any assistance would be appreciated.
Thanks!
06-18-2013 08:20 AM
In config mode, try:
no event manager directory user library flash:/user_library
event manager directory user library flash:/user_library
Then see if the policy will work.
06-19-2013 05:16 AM
Joseph,
The above commands didn't seem to do the trick. Still receiving the "invalid command name "exec_show_commands"" error.
Thanks.
07-01-2013 02:27 PM
Copy this code into bgp_neighbor_loss.tcl. I think they forgot to either include the library or add the function:
source "sdiag_lib.tcl"
If that doesn't work, add this code to bgp_neighbor_loss.tcl:
proc exec_show_commands {command} {
global errorInfo
if [catch {cli_open} result] {
error $result $errorInfo
} else {
array set cli1 $result
}
if [catch {cli_exec $cli1(fd) "enable"} result] {
error $result $errorInfo
}
if [catch {cli_exec $cli1(fd) $command} result] {
error $result $errorInfo
} else {
set show_command_output $result
}
if [catch {cli_close $cli1(fd) $cli1(tty_id)} result] {
error $result $errorInfo
}
return $show_command_output
}
07-03-2013 07:17 AM
Sorry but to receive a syslog when a BGP session goes down you do not need EEM. Normal logging is enough:
!
router bgp 1234
bgp log-neighbor-changes
!
logging host x.x.x.x
Best Rgds,
Jerome
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