Вобщем, откопал свою:
Код:
while true; do
sleep 660 # 11 minutes
if ( ! ping -c 2 -w 10 ya.ru &>/dev/null ) && ( ! ping -c 2 -w 10 google.ru &>/dev/null ) && ( ! ping -c 2 -w 10 mail.ru &>/dev/null ) && [ -e /dev/ttyUSB0 ]; then
poff
sleep 1
pon
echo `date` "FAIL: no reply with exists ttyUSB0."
echo `date` "pinger: no reply from remote host, ttyUSB0 exists. Seems connection is dead. PPPD restarted." >> /var/log/pinger.log 2>&1
echo "To:atriumcrapf@gmail.com
From: pinger@yourhost.domain
Subject: [pinger@yourhost.domain] internet fail
fail at " `date +%H:%M:%S-%Y-%m-%d` | sendmail admin@example.com
elif ! [ -e /dev/ttyUSB0 ]; then
echo `date` "FAIL: no /dev/ttyUSB0 found."
echo `date` "pinger: no ttyUSB0 found. seems modem is not installed; nothing done." >> /var/log/pinger.log 2>&1
else
echo `date` "OK: no errors found."
echo `date` "pinger: modem is installed and remote hosts replies seems to all works correctly; sleeping" >> /var/log/pinger.log 2>&1
fi
done
Ну, столкнулся с тем, что единственный способ определить, что линк не зомби - это попинговать что-нибудь снаружи.
Запускается при старте системы (запускать нужно примерно так: screen -dmS pinger path-to-pinger.sh), вихляется в фоне, смотрит, пишет лог, отправляет на почту сообщения об ошибках (видно когда деньги закончились например). Но тут ещё нужно MTA сконфигурировать, чтобы пытался отправлять письма до тех пор, пока не отправится, либо (как у меня) пытаться отправить письма через другой почтовый сервер (на машине с основным линком в моём случае)