Whenever our internet connection fails, I have to run through a series of checks, namely:
1. Check I can ping the edge router in school
2. Check I can ping the headend router at RM
3. Check I can ping the DNS server/Exchange Server etc... at our LEA
4. Check I can ping the RM proxy
Depending on the results of the above, I will then connect through to the switch on which the edge router connects and run various pings from that.
Eventually, I narrow it down to
a) Bust switch
b) Bust edge router
c) External issue
Now, are there any perl gurus out there who could code up a script that checks pings and their results? Also, is it possible to script a telnet or ssh session, and running a command on that session, looking at the result it returns?
Cheers in advance...
Well no, it's never going to be a replacement for going and having a proper look, but at least I could glance at it and see that intermediate stuff was working and so probably wasn't able to fix it.
Edit: oh, I should read your post more carefully. I monitored key switchgear along the way, so that I had a path to the edge not just the edge router.
Last edited by powdarrmonkey; 7th January 2009 at 04:38 PM.
Straight answer is yes, it can be done including the SSH question with the caveat that there needs to be an ability to load an sshkey onto the "host" you wish to ssh into to perform commands as I'd be a bit wary of throwing the password in cleartext at it.
I could write that in bash now, but I'm on the track with perl hopefully this week and next to see whether I could do that also.
If this can be done please share the code would find it useful
I am NOT a scripting guru, but was able to put together for you a ping script quickly. (I am not a networking/systems guru either - just know a little bit of scripting.)
Here is the script. Feel free to use it, edit it, make it better, etc. It is in biterscripting - you can use any language. (I like biterscripting because you can write a script in no time at all.)
To run the script, save it in file ping.txt. Then call it using following command.Code:# PING SCRIPT # Following are passed as input arguments. They are ip addresses. var str edge, headend, server # Ping edge first. We will look for the lost packets in the response. var str reply var int lost system ping ("\""+$edge+"\"") > $reply # Parse the reply to get number of lost packets. That number is between "Lost = " and " ". stex "^Lost = ^]" $reply > null stex "[^ ^" $reply > null set $lost = makeint(str($reply)) if ($lost > 0) echo "EDGE ROUTER DOWN" else # Edge router is OK. # Check the headend router the same way. . . . if ($lost > 0) echo "HEADEND ROUTER DOWN" else # Headend router is ok. # Check the server the same way. . . . if ($lost > 0) echo "SERVER DOWN" else . . . etc. endif # Check for server endif # Check for headend router endif # Check for edge router
Very simple, really. You can also use URLs instead of IP addresses, such as "http://www.somesite.com". If you don't have biterscripting - it is free - download and install it from http://www.biterscripting.com. You can also follow their installation directions. (For your purposes, I don't think you need to do anything other than just install, then call the ping script as above.)Code:script ping.txt edge("184.108.40.206") headend("220.127.116.11") server("18.104.22.168")
There are currently 1 users browsing this thread. (0 members and 1 guests)