Вы можете использовать команду ping для анализа качества соединения. Я использую эту функцию для тестирования текущего интерфейса в Linux. Это адрес назначения ping 10 раз и возвращает 0 - если это удается, 1- в противном случае. Это просто одна из возможностей.
param1 - имя интерфейса (eth0, tun0 ...); param2 - ping destination
ping_interface() {
# Max value of losted packages in %
MAX_PACKETS_LOST=80
PACKETS_COUNT=10
PACKETS_LOST=$(ping -c $PACKETS_COUNT -I $1 $2 |grep % | awk '{print $7}')
if ! [ -n "$PACKETS_LOST" ] || [ "$PACKETS_LOST" == "100%" ];
then
# 100% failed
return 1
else
if [ "${PACKETS_LOST}" == "0%" ];
then
#ping is OK
return 0
else
# Real value of losted packets between 0 and 100%
REAL_PACKETS_LOST=$(echo $PACKETS_LOST | sed 's/.$//')
if [[ ${REAL_PACKETS_LOST} -gt ${MAX_PACKETS_LOST} ]];
then
echo "Failed. Lost more then limit"
return 1
else
echo "Connection is ok."
return 0
fi
fi
fi
}
ping_interface eth0 8.8.8.8
Shell обычно несколько синтаксис, в отличие от C/Java. '== null' не работает так, как вы ожидали. См. 'Help [['. Не уверен, чего вы пытаетесь достичь, но говоря: '[[-z $ {RRR}]]' может работать для вас. – devnull
Обычно я использую команду ping (например, ping myhost.com -c3), чтобы проверить, доступен ли хост. Затем вы можете использовать статус выхода ping (успех = 0) для дальнейшей оценки. – Robert
'когда я отключил сеть, сообщение об ошибке не отображается на' почему оно должно ВКЛЮЧЕНО –