How to detect network offline and execute script

2001-08-07 Thread David Morris
I know this is something I have seen somewhere (and it is probably something 
right in front of my eyes). But I have just setup a cable modem that uses 
dhclient to grab it's IP. Every once in a while the cable modem will flake out 
and then it is unusable - until I sit down and either physically reboot it, or 
(I've figured this out) release the IP and drop the NIC then reconnect the 
card and the dhclient.

What I want is a script I can run as a cron job (every 15 minutes or so) that 
will check to see if the network is usable or not. If the modem has flaked out 
on me, it will bring it down and then keep trying to bring it up until it 
succeeds. (Oh and it would be nice to have it send me a little email telling 
me what it did - that's not asking too much is it? :).

Like I said, I know this has got to be somewhere, but I can't find it. Can 
someone point to where it is laid out for me or maybe put together a little 
script fragment that will do the checking for me?

Thanks,
David

--
The Morris Family
David, Lori, Sarah, Emily and Anna
--




Re: How to detect network offline and execute script

2001-08-07 Thread Sebastiaan
High,

On Tue, 7 Aug 2001, David Morris wrote:

 I know this is something I have seen somewhere (and it is probably something 
 right in front of my eyes). But I have just setup a cable modem that uses 
 dhclient to grab it's IP. Every once in a while the cable modem will flake 
 out 
 and then it is unusable - until I sit down and either physically reboot it, 
 or 
 (I've figured this out) release the IP and drop the NIC then reconnect the 
 card and the dhclient.
 
 What I want is a script I can run as a cron job (every 15 minutes or so) that 
 will check to see if the network is usable or not. If the modem has flaked 
 out 
 on me, it will bring it down and then keep trying to bring it up until it 
 succeeds. (Oh and it would be nice to have it send me a little email telling 
 me what it did - that's not asking too much is it? :).
 
 Like I said, I know this has got to be somewhere, but I can't find it. Can 
 someone point to where it is laid out for me or maybe put together a little 
 script fragment that will do the checking for me?
 
It is really very simple. Add these lines to /etc/crontab:

0  ** * *   root/bin/ping -c 2 -i 5 213.10.33.89  /dev/null || 
/etc/init.d/adsl restart
15 ** * *   root/bin/ping -c 2 -i 5 213.10.33.89  /dev/null || 
/etc/init.d/adsl restart
30 ** * *   root/bin/ping -c 2 -i 5 213.10.33.89  /dev/null || 
/etc/init.d/adsl restart
45 ** * *   root/bin/ping -c 2 -i 5 213.10.33.89  /dev/null || 
/etc/init.d/adsl restart

where 213.10.33.89 is the closest ip address and /etc/init.d/adsl is your
connection script.

The big prob is to find the proper IP address. It is not ok if you use the
IP of your modem, because Linux uses a shortcut then. I think it is quite
safe to take the first ip after your network, i.e. do a traceroute to
somewhere and write down the first ip address after your network (this is
probably your isp's). Do this with some sessions in a couple of days. If
you are sure enough that the address does not change, use that.

Also note that if you have a slow connection you have to play with the
ping respond times. Perhaps you could even setup a traceroute kind of
script in stead of ping.

Greetz,
Sebastiaan