Die Arbeit auf Cisco Geräten besteht oft aus sich wiederholenden Tätigkeiten, teilweise muss man auch nur mal einige IPs pingen oder einen Traceroute machen um zu wissen ob bestimmte Funktionen im Netz da sind. Manchmal ist es auch eine Aufgabe die man auf vielen Ports ausführen muss, wofür es aber vielleicht kein „int range …“ gibt.
Dabei kann man sich mit TCL behelfen, einer sehr einfachen Scriptsprache. Ein Beispiel:
tclsh foreach VAR { 150.1.1.1 150.1.2.2 150.1.3.3 150.1.4.4 } { ping $VAR source loopback0 }
Wie man leicht sieht, pingt dieses Script 4 IP Adressen mit der Source Lo0.
Ein anderes Beispiel wäre:
tclsh foreach VAR { 1 2 3 4 5 6 7 8 9 40 41 42 43 44 45 46 47 48 } { clear counters GigabitEthernet 1/0/$VAR }
Damit cleart ihr die Counters der Interfaces Gi1/0/1-9 und Gi1/0/40-48.
Um die TCL Shell wieder zu verlassen, einfach „tclquit“ eingeben.
Als kleines Beispiel habe ich schnell einen leeren Router in GNS3 gestartet und die Interface Counter gecleart:
R4# R4# R4#sh ip int brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset administratively down down FastEthernet0/1 unassigned YES unset administratively down down R4# R4# R4# R4#tclsh R4(tcl)#foreach VAR { +>(tcl)#0 +>(tcl)#1 +>(tcl)#} { clear counters Fa0/$VAR } Clear "show interface" counters on this interface [confirm] Clear "show interface" counters on this interface [confirm] R4(tcl)# *Mar 1 00:01:26.443: %CLEAR-5-COUNTERS: Clear counter on interface FastEthernet0/0 by console *Mar 1 00:01:27.127: %CLEAR-5-COUNTERS: Clear counter on interface FastEthernet0/1 by console R4(tcl)# R4(tcl)#tclquit R4# R4#
Es ist auch möglich mehrere Befehle auszugeben um z.B. mehrere Interfaces mit IP Adressen anzulegen (zum testen oder so)
tclsh foreach i { 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 } { ios_config "interface lo$i" "vrf forwarding VRF1" "ip address 10.10.10.$i 255.255.255.255" }
Und um dann alle zu pingen, kann man wieder den nutzen:
tclsh foreach i { 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 } { ping vrf VRF1 10.10.10.$i size 1500 repeat 1000 }