соответственно например:
set -- $(ping -c 1 ya.ru | grep packets)
load="${1}"
после этого в $load будет или строка о том что пакет успешно вернулся, или пусто.
Вопрос в том как это правильно проверить?
Экспериментировать сложно, потому что маршрутизатор через какое-то количество экспериментов в веб интерфейсе перестает выдавать ответы.
Как то так? if [ "$load" == "" ] то узел недоступен?
Спасибо.
Вторая версия - при нажатии на кнопку передергивается WAN-интерфейс:
Code:
# Constants
INTERFACE=vlan1
ADDR_GATE=10.2.2.1
ADDR_INET=ya.ru
PERIOD_GENERIC=60
PERIOD_ALERT=5
# Red
color=3
gpio disable $color
# Loop
period=$PERIOD_ALERT
count=0
while sleep 1
do
# Button
if [ $(($(printf "%d" "'`dd if=/dev/gpio/in count=1 2>/dev/null`")&64)) -eq 0 ]
then
if [ $color -ne 0 ]
then
gpio enable $color
fi
ifconfig $INTERFACE down
# Red
color=3
i=0
while [ $i -lt 30 ]
do
gpio disable $color
usleep 50000
gpio enable $color
usleep 50000
i=`expr $i + 1`
done
ifconfig $INTERFACE up
gpio disable $color
count=$period
fi
# Test
if [ $count -ge $period ]
then
if ! ping -c 1 $ADDR_INET >/dev/null
then
if ! ping -c 1 $ADDR_GATE >/dev/null
then
# Red
if [ $color -ne 3 ]
then
gpio enable $color
color=3
gpio disable $color
fi
else
# Blue
if [ $color -ne 4 ]
then
gpio enable $color
color=4
gpio disable $color
fi
fi
period=$PERIOD_ALERT
else
# None
if [ $color -ne 0 ]
then
gpio enable $color
color=0
fi
period=$PERIOD_GENERIC
fi
count=0
fi
count=`expr $count + 1`
done