To speed through the issue logging, I wrote a small script to ping my router, Comcast's gateway and their Domain Name Server. It's nothing big, but I thought I'd share it. I meant to do this a few weeks ago, but neglected to. I lost many files (more on that later) and I needed to reconstruct the script, as I find it to be useful.
My wife recently got a new Vista laptop and I modified it for her. Windows batch scripting has some differences, so it wasn't a 1 for 1 conversion.
Here is the shell script - copy it to your favorite text editor and make it executable. You can change the ROUTER, GATEWAY and DNS variables to which ever ones you would like to use to check.
#!/bin/sh
#set-x
## Network status checking script
### configuration
ROUTER=192.168.1.1
GATEWAY=24.17.108.1
DNS=68.87.69.146
TIMEOUT=20
COUNT=4
### Starting Checks
echo
echo "Starting Network Checks"
echo ".....Checking Router for $TIMEOUT seconds"
ping -c $COUNT -W $TIMEOUT $ROUTER > /dev/null
ROUTERCHK=$?
echo ".....Checking Gateway for $TIMEOUT seconds"
ping -c $COUNT -W $TIMEOUT $GATEWAY > /dev/null
GATECHK=$?
echo ".....Checking DNS for $TIMEOUT seconds"
ping -c $COUNT -W $TIMEOUT $DNS > /dev/null
DNSCHK=$?
echo "Network checks finshied"
echo
### Reporting output
if [ $ROUTERCHK -ne 0 ]
then
echo "The router needs to be reset. Unplug it the power, wait 30 seconds and plug it back in."
else
echo "Router responds okay"
fi
if [ $GATECHK -ne 0 ]
then
echo "There is a problem with Comcast. Power cycle the Cable Modem and try again."
echo "If you are seeing this message again, call Comcast for a credit 800 COMCAST."
else
echo "Gateway responds okay"
fi
if [ $DNSCHK -ne 0 ]
then
echo "There is a problem with Comcast. Call Comcast for a credit 800 COMCAST."
else
echo "DNS repsonds okay"
fi
exit 0
For those of you using Windows Vista (Vista seems to have different ping arguments than XP does), here is a similar script. Again, copy it to your favorite text editor and make it executable. You can change the ROUTER, GATEWAY and DNS variables to which ever ones you would like to use to check.
Enjoy!
@echo off
echo.
echo Starting Network Checks
SET ROUTER=192.168.1.1
SET GATEWAY=24.17.108.1
SET DNS=68.87.69.146
SET TIMEOUT=20
SET COUNT=4
echo.
echo .....Checking Router for %COUNT% responses
SET CONNECT=an
ping -n %COUNT% %ROUTER% | find "TTL" > nul
IF ERRORLEVEL 1 SET CONNECT=NO
ECHO You have %CONNECT% active connection to the Router
echo.
echo .....Checking DNS for %COUNT% responses
SET CONNECT=an
ping -n %COUNT% %GATEWAY% | find "TTL" > nul
IF ERRORLEVEL 1 SET CONNECT=NO
ECHO You have %CONNECT% active connection to Comcast's Gateway
echo.
echo .....Checking DNS for %COUNT% responses
SET CONNECT=an
ping -n %COUNT% %DNS% | find "TTL" > nul
IF ERRORLEVEL 1 SET CONNECT=NO
ECHO You have %CONNECT% active connection to the Domain Name Server
echo.
ECHO *****CORRECTIVE ACTION, IF NEEDED*******
ECHO If the Router is not connected, check your wifi connection, then power cycle the router
ECHO If the connection to the Gateway or Domain Name Server is down, power cycle the cable modem
ECHO and repeat the test.
ECHO If it is still down, call Comcast to report the problem and request a credit at 800 COMCAST
echo.
ECHO Power cycle = unplug the device for 30 seconds from AC power, plug it back in and then
ECHO wait 1 minute for it to reconnect.
echo.
ECHO I love you Murph
5 comments:
That's a lovely little piece of code! Our ISP occasionally wigs out, and I figured there had to be some command line tool to figure out what was going on. It didn't even occur to me that I could use something as simple as ping. Thanks!
Cool! I'm glad you like it. And whats neat about it, it will run on mac's too!
I'm glad the first comment I got was "its cool" rather than someone else commenting about how geeky I was!
Thanks
Okay, I'll bite. Totally a geek, my love.
You kind of lost me at @echo off
Amelia
Murph - I hope that everybody who decides to use it keeps the "I love Murph" line
Amelia - well thats alright, you got through the unix script with out question and it was the windoze script that threw you for a loop! :D
Post a Comment