Во-первых, условие нужно инвертировать, потому что код возврата = 0 в случае успешного пинга.
Во-вторых, мне кажется, лучше сделать более одного пинга (например, 3), чтобы исключить совсем случайные потери.
Ну и в-третьих, при выполнении действия "connect" прошивка автоматически сначала делает disconnect, так что их можно объединить :)
В общем, мои изменения в коде:
ping.sh
Code:
#!/bin/sh
PINGADDRESS='www.google.ru'
while true ; do
sleep 15m #интервал между итерациями - в данном случае, 15 минут
if ! ping -c 3 -q "$PINGADDRESS" > /dev/null 2>&1 ; then
killall -SIGHUP pppd
# Предыдущая строчка вызовет переподключение только PPTP (не знаю насчёт L2TP).
# Если нужно переподключить ещё и локалку провайдера, закомментируйте ту строчку
# и раскомментируйте следующую:
#/usr/local/sbin/connector connect
exit
fi
done
connector остаётся тем же.
А вот вызов ping.sh лучше добавить в post-firewall:
Code:
if [ "$2" != "0.0.0.0" ] ; then
/usr/local/sbin/ping.sh >/dev/null 2>&1 &
fi