Help on tclsh there must be better way?
Okay CCNPers.
I understand the tcl script below but being the scripting monkey that I am. I want to make my script do this. I think it is a waste for me to see lines of lines of icmp pings and results.
I want to see at the end of my script run this:
2 failed connections
10.1.200.1
10.1.1.1
I know there has to be a way to do this. If I had a good book or function tutorial on the language I know I could make my script more efficient. I have crappy eyes and I dont need to be perusing the output of 10 plus pings. I want to make my script fin any bad links and report bad pings. Is the tcl script possible ? Or am I dreaming?
Thanks
-Robert
foreach address {
10.1.200.1
10.1.200.2
10.1.200.3
10.1.1.1
10.1.100.1
10.1.100.2
10.1.2.1
192.168.100.1
192.168.100.5
10.1.3.1
} {
ping $address
}
tclquit
I understand the tcl script below but being the scripting monkey that I am. I want to make my script do this. I think it is a waste for me to see lines of lines of icmp pings and results.
I want to see at the end of my script run this:
2 failed connections
10.1.200.1
10.1.1.1
I know there has to be a way to do this. If I had a good book or function tutorial on the language I know I could make my script more efficient. I have crappy eyes and I dont need to be perusing the output of 10 plus pings. I want to make my script fin any bad links and report bad pings. Is the tcl script possible ? Or am I dreaming?
Thanks
-Robert
foreach address {
10.1.200.1
10.1.200.2
10.1.200.3
10.1.1.1
10.1.100.1
10.1.100.2
10.1.2.1
192.168.100.1
192.168.100.5
10.1.3.1
} {
ping $address
}
tclquit
Comments
-
mikej412 Member Posts: 10,086 ■■■■■■■■■■Is the tcl script possible ?
Grammar, spelling, punctuation...
What did you do with the REAL itdaddy?:mike: Cisco Certifications -- Collect the Entire Set! -
miller811 Member Posts: 897Grammar, spelling, punctuation...
What did you do with the REAL itdaddy?
Now that made my day.... but it is still early...
Thanks for the laugh
I don't claim to be an expert, but I sure would like to become one someday.
Quest for 11K pages read in 2011
Page Count total to date - 1283 -
EdTheLad Member Posts: 2,111 ■■■■□□□□□□Grammar, spelling, punctuation...
What did you do with the REAL itdaddy?
He's been replaced with Robert.Networking, sometimes i love it, mostly i hate it.Its all about the $$$$ -
itdaddy Member Posts: 2,089 ■■■■□□□□□□OMG you are so funny, dudes! I know I know my grammer and spelling suck sometimes
because I type way too fast. Sometimes I get crazy and always look at these forums as
a chat room, you know ITDADDY-Bonics! But IT Daddy will appear here and there and Robert will be on the back burner. But yeah, I know even on my blogs it sucks when reading some of my entries. Spaz I can be sometimes but you dudes make me laugh so hard! hhahaha
Mike
I know I need to learn TCL. I was wondering do you know of any good reference. I know
If I had a good reference book I could make my script better.
I here what you say about the ping etc..but I am only checking connections and to see
if I have them right and do not want to look thru a list of 10-20 ip addresses. I have sh% for eyes which really hurts me in Cisco a bit since it is hard for me to read and see so much data at once. I am use to making programs work for me. And if I can make a script display
only the connections that fail, that is all I need. I see sometimes I may need to see more, but in this case it would be nice to see displayed only what didn't connect. Saves me time.
Thanks a lot for answering. Do you know of any Good reference for TCL; 3rd party reference
but if Cisco reference is good great then. I know if a programmer got hold of tcl, he or she might have decent sripts. Thanks -
mkomon Member Posts: 37 ■■□□□□□□□□Hey,
I used TCLtutor as a reference when I was learning TCL. You might want to try it too, its homepage is TclTutor : Interactive Computer Aided Instruction for Tcl .
As for your ping script, maybe this could help:
fconfigure stdout -buffering none
proc ping { IP } {
set PING [ exec "ping $IP repeat 3" ]
set PING [ regexp -inline -all {[\.!]{3}} $PING ]
if { [ string first "!" $PING ] == -1 } {
puts "[format "%-40s %s" "ping $IP" "\[failed\]" ]"
} else {
puts "[format "%-40s %s" "ping $IP" "\[ OK \]" ]"
}
}
foreach address {
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
} {
ping $address
} -
mikej412 Member Posts: 10,086 ■■■■■■■■■■As for your ping script, maybe this could help:
Router#show ip int brief Interface IP-Address OK? Method Status Prot ocol .................. Loopback1 1.1.1.1 YES manual up up Loopback10 10.0.0.1 YES manual up up Router#tclsh Router(tcl)#proc ping { IP } { +>set PING [ exec "ping $IP repeat 3" ] +>set PING [ regexp -inline -all {[\.!]{3}} $PING ] +>if { [ string first "!" $PING ] == -1 } { +>puts "[format "%-40s %s" "ping $IP" "\[failed\]" ]" +>} else { +>puts "[format "%-40s %s" "ping $IP" "\[ OK \]" ]" +>} +>} Router(tcl)# Router(tcl)#foreach address { +>10.0.0.1 +>192.168.1.1 +>192.168.1.2 +>192.168.1.3 +>192.168.1.4 +>192.168.1.5 +>1.1.1.1 +>} { +>ping $address +>} ping 10.0.0.1 [ OK ] ping 192.168.1.1 [failed] ping 192.168.1.2 [failed] ping 192.168.1.3 [failed] ping 192.168.1.4 [failed] ping 192.168.1.5 [failed] ping 1.1.1.1 [ OK ] Router(tcl)#tclquit Router#
Robert -- your homework is to post the script that keeps a count and stores the failed IP Addresses and then does the output like your original post.:mike: Cisco Certifications -- Collect the Entire Set! -
itdaddy Member Posts: 2,089 ■■■■□□□□□□Mkomon
oh my god is that sweet. and regexp too; man dude you rock
this is so cool. yeah will look at the tutor site...but yeah
one of these days might make my own script.
but way cool dude way cool!
thanks
ps. that is why I love scripting. it is for the lazy man! haha
or in my case the blind man!
hahah;) -
itdaddy Member Posts: 2,089 ■■■■□□□□□□mike you are funny
my homework. hahha
I do like this script better; I was only planting the seed. this one is way better
algorithm. But one day I will make an even better one you will see my friend.
You wait and see. I have known to push the envelope in scripting...
hee hee
scripting rocks; need to study that tutorial!
thanks guys for your insight you dudes are awesome!
ps. and you don't even make fun of my crappy typing hahhaa;) -
mkomon Member Posts: 37 ■■□□□□□□□□I'm glad you guys like it.
You might want to check out Cisco IOS hints and tricks as well, there is a huge amount of tcl scripts that could inspire you. Everytime I surf there I am always fascinated what cool stuff can be achieved using tcl in routers. -
itdaddy Member Posts: 2,089 ■■■■□□□□□□mkomon
really wow will do. Yeah I love scripts man. amazing whatyou can do with them.
this one is cool...I really need to add reg expr to my skill base still haven't found a decet tutorial on it. but I know what it is doing
hey Mkomon, you know of a good reg expr. tutorial. i will be getting that book you recommended thanks
robert -
mkomon Member Posts: 37 ■■□□□□□□□□I am still learning all the regexp stuff and I can only say it is practice that makes you a master. I do some python scripting at work and I find regexp's a very convenient way to validate (user) input (from command line/config file/whatever) and to parse it into what I need. So I suggest you start from simple matching rules using basic tutorials and it will all come to you. I found this link useful: Regular Expression HOWTO . It may be python-specific in some parts but the core matching is very similar in tcl as in python, as far as I have seen.
-
itdaddy Member Posts: 2,089 ■■■■□□□□□□okay cute! thanks a lot I will work on my spelling and punct! it does suck I agree ahhaahhha
thanks sorry if I was soundling like a jerk, I am not..
thanks!