11-06-2015 08:07 AM
I am trying to create an EEM script that has multiple event triggers that has a different set of actions based on the event that triggered the applet. I have included an applet I use for CPU alerts. I would like to have event #1 generate the syslog messages and event #2 output the results to the vty (since it would have been manually run).
!
event manager applet CPU authorization bypass
event tag E1 syslog pattern "CPURISING" occurs 1
event tag E2 none
trigger
correlate event E1 or event E2
exit
action 1.00 info type routername
action 2.00 comment "#### CLI Command ####"
action 2.01 cli command "enable"
action 2.02 cli command "show processes cpu sorted 5sec | e 0.00"
action 3.00 comment "#### Set Variables ####"
action 3.01 set cpuline "0"
action 3.02 set cpulines "0"
action 3.03 set pidline "0"
action 3.04 set pidlines "0"
action 3.30 set cpuline3 "0"
action 3.31 set cpuline3_pid "0"
action 3.35 set cpuline3_name "0"
action 3.40 set cpuline4 "0"
action 3.41 set cpuline4_pid "0"
action 3.45 set cpuline4_name "0"
action 3.50 set cpuline5 "0"
action 3.51 set cpuline5_pid "0"
action 3.55 set cpuline5_name "0"
action 4.00 comment "#### Process CLI Results ####"
action 4.01 foreach cpuline "$_cli_result" "\n"
action 4.30 if $cpulines eq "3"
action 4.31 regexp " ([0-9]+) " "$cpuline" cpuline3 cpuline3_pid
action 4.39 end
action 4.40 if $cpulines eq "4"
action 4.41 regexp " ([0-9]+) " "$cpuline" cpuline4 cpuline4_pid
action 4.49 end
action 4.50 if $cpulines eq "5"
action 4.51 regexp " ([0-9]+) " "$cpuline" cpuline5 cpuline5_pid
action 4.59 end
action 5.30 comment "#### CLI Command ####"
action 5.31 if $cpulines eq "3"
action 5.32 cli command "show proc $cpuline3_pid"
action 5.33 regexp " \[([a-zA-Z a-zA-Z]+)\]" "$_cli_result" cpuline3_name
action 5.39 end
action 5.40 comment "#### CLI Command ####"
action 5.41 if $cpulines eq "4"
action 5.42 cli command "show proc $cpuline4_pid"
action 5.43 regexp " \[([a-zA-Z a-zA-Z]+)\]" "$_cli_result" cpuline4_name
action 5.49 end
action 5.50 comment "#### CLI Command ####"
action 5.51 if $cpulines eq "5"
action 5.52 cli command "show proc $cpuline5_pid"
action 5.53 regexp " \[([a-zA-Z a-zA-Z]+)\]" "$_cli_result" cpuline5_name
action 5.59 end
action 9.01 if $cpulines eq "5"
action 9.02 syslog msg "Top CPU Processes: ($cpuline3_pid)$cpuline3_name || ($cpuline4_pid)$cpuline4_name || ($cpuline5_pid)$cpuline5_name"
action 9.03 if $cpulines eq "4"
action 9.04 syslog msg "Top CPU Processes: ($cpuline3_pid)$cpuline3_name || ($cpuline4_pid)$cpuline4_name"
action 9.05 if $cpulines eq "3"
action 9.06 syslog msg "Top CPU Process: ($cpuline3_pid)$cpuline3_name"
action 9.07 end
action 9.08 end
action 9.09 end
action 9.90 increment cpulines
action 9.91 if $cpulines eq "6"
action 9.92 break
action 9.93 end
action 9.99 end
exit
!
Solved! Go to Solution.
11-07-2015 05:17 AM
Just use action puts instead of action syslog. It will do the right thing. When synchronous, it will print the originating VTY. When async, it will output to syslog.
11-07-2015 05:17 AM
Just use action puts instead of action syslog. It will do the right thing. When synchronous, it will print the originating VTY. When async, it will output to syslog.
11-08-2015 04:09 PM
Thanks Joe.
If I understand you correctly, puts will send to VTY or syslog? So make this change?
==============
action 9.01 if $cpulines eq "5"
action 9.02 puts "Top CPU Processes: ($cpuline3_pid)$cpuline3_name || ($cpuline4_pid)$cpuline4_name || ($cpuline5_pid)$cpuline5_name"
action 9.03 if $cpulines eq "4"
action 9.04 puts "Top CPU Processes: ($cpuline3_pid)$cpuline3_name || ($cpuline4_pid)$cpuline4_name"
action 9.05 if $cpulines eq "3"
action 9.06 puts "Top CPU Process: ($cpuline3_pid)$cpuline3_name"
==============
11-08-2015 06:16 PM
Yes.
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