Embedded Event Manager simple example
EEM can be used for monitoring, or triggered by specified conditions (change configuration, etc.).
The following is Cisco official document.
Embedded Event Manager (EEM) is a distributed and customized approach to event detection and recovery offered directly in a Cisco IOS device. EEM offers the ability to monitor events and take informational, corrective, or any desired EEM action when the monitored events occur or when a threshold is reached. An EEM policy is an entity that defines an event and the actions to be taken when that event occurs.
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/eem/configuration/xe-16/eem-xe-16-book/eem-overview.html
1. Simple Python script
import cli config_interface = cli.configurep( ["interface GigabitEthernet3", "ip add 1.1.1.1 255.255.255.0", "no shutdown", "end"]) print(config_interface)
2. Copy to csr1000v flash
haifeli-csr1kv#copy tftp://10.2.2.2/haifeli/haifeng.py flash: Destination filename [haifeng.py]? Accessing tftp://10.2.2.2/haifeli/haifeng.py... Loading haifeli/haifeng.py from 10.2.2.2 (via GigabitEthernet1): ! [OK - 262 bytes] 262 bytes copied in 0.353 secs (742 bytes/sec) haifeli-csr1kv#
3. Configure IP SLA
haifeli-csr1kv#sh run | sec sla track 1 ip sla 1 reachability ip sla 1 icmp-echo 1.1.1.1 source-interface GigabitEthernet3 ip sla schedule 1 life forever start-time now
4. Configure EEM
haifeli-csr1kv#sh run | sec event event manager applet track-GigabitEthernet3 event syslog pattern "%TRACK-6-STATE: 1 ip sla 1 reachability Up -> Down" action 0.0 cli command "en" action 1.0 cli command "guestshell run python /flash/haifeng.py"
5. Verification
haifeli-csr1kv#show ip int brief Interface IP-Address OK? Method Status Protocol GigabitEthernet1 10.124.53.53 YES other up up GigabitEthernet2 100.100.100.2 YES other up up GigabitEthernet3 1.1.1.1 YES TFTP up up VirtualPortGroup0 192.168.2.1 YES manual up up haifeli-csr1kv# haifeli-csr1kv#show track 1 Track 1 IP SLA 1 reachability Reachability is Up 10 changes, last change 00:00:40 Latest operation return code: OK Latest RTT (millisecs) 1 haifeli-csr1kv# haifeli-csr1kv#terminal monitor haifeli-csr1kv# haifeli-csr1kv# haifeli-csr1kv#conf t Enter configuration commands, one per line. End with CNTL/Z. haifeli-csr1kv(config)#default int gigabitEthernet 3 Interface GigabitEthernet3 set to default configuration haifeli-csr1kv(config)# *Apr 14 10:57:20.584: %DMI-5-SYNC_START: R0/0: syncfd: External change to running configuration detected. The running configuration will be synchronized to the NETCONF running data store. *Apr 14 10:57:24.397: %DMI-5-SYNC_COMPLETE: R0/0: syncfd: The running configuration has been synchronized to the NETCONF running data store. *Apr 14 10:57:24.868: %TRACK-6-STATE: 1 ip sla 1 reachability Up -> Down *Apr 14 10:57:24.869: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : CTL : cli_open called. *Apr 14 10:57:24.870: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : haifeli-csr1kv> *Apr 14 10:57:24.870: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : IN : haifeli-csr1kv>en *Apr 14 10:57:24.881: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : haifeli-csr1kv# *Apr 14 10:57:24.881: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : IN : haifeli-csr1kv#guestshell run python /flash/haifeng.py *Apr 14 10:57:28.806: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : Line 1 SUCCESS: interface GigabitEthernet3 *Apr 14 10:57:28.806: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : Line 2 SUCCESS: ip add 1.1.1.1 255.255.255.0 *Apr 14 10:57:28.806: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : Line 3 SUCCESS: no shutdown *Apr 14 10:57:28.807: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : Line 4 SUCCESS: end *Apr 14 10:57:28.807: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : None *Apr 14 10:57:28.807: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : *Apr 14 10:57:28.807: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : *Apr 14 10:57:28.807: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : OUT : haifeli-csr1kv# *Apr 14 10:57:28.807: %HA_EM-6-LOG: track-GigabitEthernet3 : DEBUG(cli_lib) : : CTL : cli_close called. *Apr 14 10:57:28.807: *Apr 14 10:57:28.807: tty is now going through its death sequence haifeli-csr1kv(config)# haifeli-csr1kv(config)# haifeli-csr1kv(config)# haifeli-csr1kv(config)#end haifeli-csr1kv# haifeli-csr1kv# haifeli-csr1kv#show ip int brief Interface IP-Address OK? Method Status Protocol GigabitEthernet1 10.124.53.53 YES other up up GigabitEthernet2 100.100.100.2 YES other up up GigabitEthernet3 1.1.1.1 YES TFTP up up VirtualPortGroup0 192.168.2.1 YES manual up up haifeli-csr1kv# haifeli-csr1kv# *Apr 14 10:58:24.869: %TRACK-6-STATE: 1 ip sla 1 reachability Down -> Up
Recent Comments