Az első EEM scriptem!

Vegyük alapul a következő problémát, amelyet az alábbi GNS3 topológiával mintáztam:

 

Feladatom az lenne, hogy egy célállomást pingeljek, és ha kimarad a ping, tudjam, mikor maradt ki.

R1 Lo1-gyel szimuláljuk a célállomást, R2-ről fogunk pingelni.

A sima ping nem jó, hiszen hiába használom, nem fogom tudni, mikor maradt ki. Nekem pontos idő kell (most csak clock set lesz, ntp nem, de valós körülmények között azt adottnak veszem, GNS3-ban nem vesződöm vele).

Az IP SLA kézenfekvő megoldás, de ott sem fogjuk tudni, mikor veszett el a csomag.

Viszont egy tracking-gel az ip sla-ra már kapunk egy syslog bejegyzést, amelyből információhoz jutunk. Ebből indultam ki.

 

Gyorsan a basic configok (R2-n kell egy statikus route 1.1.1.1/32-re, hiszen számára csak a 10.0.12.0/24 connected. R1-gyel nincs gond, mert számára mindkét subnet connected). És vegyétek észre, hogy nem rövidítettem, mindenhol kiírtam a parancsokat 🙂

 

R1>
R1>enable
R1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#interface fastethernet0/0
R1(config-if)#ip address 10.0.12.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#interface Loopback1
R1(config-if)#ip address 1.1.1.1 255.255.255.255
R1(config-if)#^Z
R1#
R1#
R1#clock set 17:30:00 2 Oct 2012
*Oct 2 17:30:00.000: %SYS-6-CLOCKUPDATE: System clock has been updated from 00:06:54 UTC Fri Mar 1 2002 to 17:30:00 UTC Tue Oct 2 2012, configured from console by console.


R2>
R2>
R2>enable
R2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#interface fastethernet0/0
R2(config-if)#ip address 10.0.12.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#ip route 1.1.1.1 255.255.255.255 10.0.12.1
R2(config)#^Z
R2#clock set 17:31:00 2 Oct 2012
*Oct 2 17:31:00.000: %SYS-6-CLOCKUPDATE: System clock has been updated from 00:09:21 UTC Fri Mar 1 2002 to 17:31:00 UTC Tue Oct 2 2012, configured from console by console.
R2#ping 1.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 48/89/180 ms

 

Megy a ping, jöhet az IP SLA (Az ip sla a trackingben rtr, de van olyan IOS verzió amiben IP SLA. Ha nem működne a track X ip sla X, akkor próbáld a track X rtr X-et).

 

R2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#ip sla 1
R2(config-ip-sla)#icmp-echo 1.1.1.1
R2(config-ip-sla-echo)#timeout 300
R2(config-ip-sla-echo)#frequency 1
R2(config-ip-sla-echo)#exit
R2(config)#ip sla schedule 1 start now life forever
R2(config)#track 1 rtr 1 reachability
R2(config-track)#^Z
R2#
Oct 2 17:35:53.515: %SYS-5-CONFIG_I: Configured from console by console

 

Nézzük az IP SLA és a track állapotát:

 

R2#sh ip sla statistics 1
Round Trip Time (RTT) for Index 1
 Latest RTT: 108 milliseconds
Latest operation start time: 17:36:15.411 UTC Tue Oct 2 2012
Latest operation return code: OK
Number of successes: 33
Number of failures: 0
Operation time to live: Forever

R2#sh track 1
Track 1
 Response Time Reporter 1 reachability
 Reachability is Up
 1 change, last change 00:00:28
 Latest operation return code: OK
 Latest RTT (millisecs) 108

 

Ha most lenyomom R1 Lo1-et, egy syslog-ot fog dobni a tracking. Nézzük.

R1(config)#int lo1
R1(config-if)#sh
R1(config-if)#
Oct 2 17:40:09.095: %LINK-5-CHANGED: Interface Loopback1, changed state to administratively down
Oct 2 17:40:10.095: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to down
R1(config-if)#
Oct 2 17:38:41.275: %TRACKING-5-STATE: 1 rtr 1 reachability Up->Down

 

R1(config-if)#no sh
R1(config-if)#
Oct 2 17:40:31.347: %LINK-3-UPDOWN: Interface Loopback1, changed state to up
Oct 2 17:40:32.347: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
R1(config-if)#
R2#
Oct 2 17:39:06.275: %TRACKING-5-STATE: 1 rtr 1 reachability Down->Up

Ez már most elég lenne, hiszen látom, ha kimarad a ping, van róla syslog-om.

De fejeljük meg egy nagyon alap EEM script-tel!

Feladata, hogy ha változik a track1 reachability, dobjon egy syslog-ot az én saját kis szövegemmel.

 

R2(config)#event manager applet PINGDOWN
R2(config-applet)#event track 1 state down
R2(config-applet)#action 1.0 syslog msg "Houston, baj van, nem pingel!"
R2(config-applet)#exit

R2(config)#event manager applet PINGUP
R2(config-applet)#event track 1 state up
R2(config-applet)#action 1.0 syslog msg "Hurra, pingel!"

 

Teszteljük:

 

R1(config-if)#sh
R1(config-if)#
Oct 2 17:45:12.627: %LINK-5-CHANGED: Interface Loopback1, changed state to administratively down
Oct 2 17:45:13.627: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to down
R2#
Oct 2 17:43:46.291: %TRACKING-5-STATE: 1 rtr 1 reachability Up->Down
R2#
Oct 2 17:43:46.315: %HA_EM-6-LOG: PINGDOWN: Houston, baj van, nem pingel!
R2#

R1(config-if)#no sh
R1(config-if)#
Oct 2 17:45:22.531: %LINK-3-UPDOWN: Interface Loopback1, changed state to up
Oct 2 17:45:23.531: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
R1(config-if)#
R2#
Oct 2 17:43:56.291: %TRACKING-5-STATE: 1 rtr 1 reachability Down->Up
R2#
Oct 2 17:43:56.295: %HA_EM-6-LOG: PINGUP: Hurra, pingel!
R2#

 

Csinálhattunk volna egy olyan EEM applet-et is, ami magát a syslog-ot kapja el és úgy reagál.

 

R2(config)#no event manager appl PINGDOWN
R2(config)#no event manager appl PINGUP
R2(config)#event manager applet pingdown2
R2(config-applet)#event syslog pattern "%TRACKING-5-STATE: 1 rtr 1 reachability Up->Down"
R2(config-applet)#action 1.0 syslog msg "Nem pingel"
R2(config-applet)#exit

R2(config)#event manager applet pingup2
R2(config-applet)#event syslog pattern "%TRACKING-5-STATE: 1 rtr 1 reachability Down->Up"
R2(config-applet)#action 1.0 syslog msg "Pingel"
R2(config-applet)#^Z
R2#
Oct 2 17:48:43.587: %SYS-5-CONFIG_I: Configured from console by console

Teszt.

R1(config-if)#sh
R1(config-if)#
Oct 2 17:52:14.975: %LINK-5-CHANGED: Interface Loopback1, changed state to administratively down
Oct 2 17:52:15.975: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to down
R1(config-if)#
R2#
Oct 2 17:50:51.291: %TRACKING-5-STATE: 1 rtr 1 reachability Up->Down
R2#
Oct 2 17:50:51.315: %HA_EM-6-LOG: pingdown2: Nem pingel
R2#

R1(config-if)#no sh
R1(config-if)#
Oct 2 17:52:34.327: %LINK-3-UPDOWN: Interface Loopback1, changed state to up
Oct 2 17:52:35.327: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
R1(config-if)#

R2#
Oct 2 17:51:06.291: %TRACKING-5-STATE: 1 rtr 1 reachability Down->Up
R2#
Oct 2 17:51:06.299: %HA_EM-6-LOG: pingup2: Pingel
R2#

 

Jó dolog ez az EEM. Megkönnyíti az ember életét, főleg, ha komoly applet-eket írogat benne az ember.