На самом деле, как показывает практика, лучше предыдущие два совета совместить
Т.е. с одной стороны заставить pppd при дисконнекте до бесконечности повторять попытки подключения, а с другой - периодически, может раз в 30 мин. скриптом через крон проверять наличие канала. Дело в том, что за pppd в некоторых ситуациях (именно при дисконнектах/реконнектах, особенно pppoe) замечена странность - _иногда_ он "устает" от попыток переустановить соединение, и pppoe закрывается с кодом нормального завершения работы - т.е. как будто пользователь сам разорвал соединение - чего мы естественно не просили... Эту беду периодически фиксят, а она периодически возникает вновь ...
Еще парочка примеров как можно делать:
для проверки наличия канала методом пинга: if ping -I интерфейс -c3 -l3 -W3 пингуемый_хост>&1 | grep "100% packet loss" > /dev/null ;
then
желаемые телодвижения, т.к. канала нет - потери пакетов 100%
fi
для проверки "жив ли" ppp:#!/bin/bash
check=`cat /proc/net/dev | grep ppp | wc -l | awk '{ print $1 }'`
if [ "$check" == "0" ]
then
#ppp-соединения отсутствуют, делаем что-то
/usr/sbin/pppoe-stop;
sleep 3;
/usr/sbin/pppoe-stop;
sleep 3;
/usr/sbin/pppoe-start;
fi