Corsi CCNA CCNP - TCLsh ProgrammingPuò capitare nelle attività di tutti i giorni in merito al networking, o fronte di un determinato case study CCNP, di dover pingare un'intera classe C per determinare, con tecnica di "ping sweep", la sua raggiungibilità o di dover abilitare su un Router

un tot di loopback per uno specifico lab.

In merito a ciò ci viene in soccorso il tcl "tool command language" che è un potente e maturo linguaggio di programmazione dinamico e in continua evoluzione il quale si adatta ad una vasta gamma di utilizzi.

Per quanto ci riguarda per poter settare i scripts su un router o switch sarà sufficente, una volta entrati in enable mode, digitare il comando tclsh e fornire alla macchina l'input che si vuole far eseguire.

Ad esempio per pingare una intera classe possiamo invocare la seguente sintassi:

Rack1R1(tcl)#for {set i 1} {$i<254} {incr i} { ping 192.168.1.$i }

Mentre se viene richiesta una /27 la sintassi da invocare é:

Rack1R1(tcl)#for {set i 1} {$i<31} {incr i} { ping 192.168.1.[expr 32+$i] }

Un'altra dinamica che può capitare in un case Study è di creare un tot di loopback e in questo caso si può mandare l'output a video del terminale, per poter prendere l'output e salvarlo su un notepad in vista di ulteriori paste, digitando:

Rack1R1(tcl)#for {set i 1} {$i<=13} {incr i 4} {puts "interfce Loopback$i\n ip address 192.168.1.$i 255.255.255.252\n no shut"}

Se si vuole invece creare direttamente delle interface loopback sarà sufficente inserire il comand ios_config, sintassi necessaria per far svolgere determinati comandi, e mettere tra "" i comandi che il tcl deve eseguire direttamente sul router, di conseguenza la sintassi sarà:

Rack1R1(tcl)#for {set i 0} {$i<=10} {incr i} {ios_config "inerface Loopback$i" "ip address 192.168.$i.1 255.255.255.252" "no shut"}

Il suo utilizzo è molto ampio e una volta preso dimestichezza ci si può divertire nell' inventare sintassi che si accostano alle nostre necessità lavorative, come ad esempio vedere se delle loopback raggiungono un determinato DG, testando una probabile presenza di una ACL, utilizzando la seguente sintassi:

Rack1R1(tcl)#for {set i 1} {$i<=10} {incr i} { ping 192.168.1.1 source Loopback$i }

Ammettiamo invece che voi gestite un HUB e a fronte di un evento invasivo volete sapere se i Spoke sono raggiungibili. Per prima cosa creare un file, sulla flash, con gli elenchi degli IP da pingare.

Rack1R1#tclsh
Rack1R1(tcl)#puts [ open "flash:Elenco_IPSpoke.txt" w+ ] {
+>10.1.20.1
+>192.168.100.1
+>192.168.10.1}


Qualora il file Elenco_IPSpoke.txt in un futuro deve essere aggiornato, aggiungendo altri spoke, sarà sufficiente mettere, al posto w+, la lettera a+ che va a significare append. Una volta preparato il file andiamo, con la sintassi a seguire, ad invocarlo per sapere, direttamente a video, che output si ottiene.

Rack1R1(tcl)#foreach ipcheck [exec "more flash:Elenco_IPSpoke.txt"] {if {[regexp "(!!!!)" [exec "ping $ipcheck"]]} {puts "$ipcheck Raggiungibilita OK" } else { puts "$ipcheck **** failed ***" }}

Essendo consapevole, soprattutto in momenti di panico, che è difficile ricordare tale sintassi possiamo creare uno script, ad esempio con nome check_ip.tcl, da utilizzare nei giorni futuri. La sintassi, una volta entrati in tcl, è la seguente:

Rack1R1(tcl)#puts [open "flash:check_ip.tcl" w+] {foreach ipcheck [exec "more flash:Elenco_IPSpoke.txt"] {if {[regexp "(!!!!)" [exec "ping $ipcheck"]]} {puts "$ipcheck Raggiungibilita OK" } else { puts "$ipcheck **** failed ***" }}}
Rack1R1(tcl)# tclquit
Rack1R1#

Ciliegina finale è crearsi successivamente un alias che ci permetterà, non in configuration terminal, di utilizzare tale comando senza essere costretti ad entrare ogni volta il tcl mode e la sintassi per ottenere questo é:
alias exec ip_check tclsh flash:check_ip.tcl

Così facendo, soprattutto in quei momenti di panico J, sarà sufficente digitare solamente ip_check comando visibile anche nel momento in cui si digita ip ? L'efficacia di questo linguaggio permette all'utente di mandare l'output non solo a video ma anche in un file e abbinandolo con la funzione KRON si può avere ad un determinato orari l'output per ottenre “informazioni “ che ci servono per una determinata attività.

Spero che tale tema possa esservi di aiuto e vi invitiamo a non utilizzare tale spiegazione per scopi malevoli in quanto procedura fornita solamente a titolo di studio.

Disclaimer: Non assicuriamo che con l’uso di tale documento si assicurerà un esito positivo nell'ambiente svolto di fatto il lettore deve applicare il proprio giudizio professionale per le specifiche circostanze presentate dai particolari sistemi o ambienti informatici. Inoltre evidenziamo che il materiale e l’informazione contenuto nel presente è fornito a titolo semplicemente informativo e sebbene si è prestato la massima attenzione all'aggiornamento ed all'esattezza delle informazioni diffuse nell'articolo, non può essere tuttavia fornita alcuna garanzia. Gli utenti, di conseguenza, sono tenuti a prendere tutte le precauzioni necessarie prima di utilizzare tali informazioni svolgendo tale procedura prima in un ambiente di collaudo e poi, avendo avuto un esito positivo, eseguirlo, solo a fronte di una autorizzazione dei loro responsabili, in esercizio/produzione.


evEros Verdini

Logo IpCert piramide

Contatti

     328 37 84 030
   0775 16 26 500
   [email protected]

RICHIESTA INFORMAZIONI


DEMO GRATUITA CORSO CCNA

Puoi richiedere l'accesso alle prime 3 ore di lezioni e al materiale didattico del corso CCNA online, senza costi e senza alcun vincolo di acquisto.


Vuoi attivare la DEMO e ricevere via mail le credenziali di accesso?