Pull to refresh

Comments 41

$fp = fsockopen('192.168.1.1', 80, $errno, $errstr, 60);
$fp = fsockopen('192.168.1.1', 80, $errno, $errstr, 60);

Это если он с первого раза не понял?
Указанную проблему можно решить при помощи bash в 5 строчек, зачем php?:

#!/bin/bash
ping -c 1 google.ru
if [ $? != «0» ]; then
wget 192.168.1.1/rebootinfo.cgi --http-user=admin --http-password=admin
fi
Ну, как-то по привычке Окнами пользуюсь :)
в windows нет комманды wget…
И php в нем нет:)
Можно скачать всего 1 файл и положить в %system%
Спасибо.
Но не во всех случаях код выше поможет.
Приведите примеры? :)
Так отработает — результат erorrlevel = 1. Проверьте сами, другое дело, что в скрипте лишний not, но концепция я думаю понятна.
что то не очень верится, нельзя ли посмотреть результаты работы скрипта
в случае когда отвалилось соединение и когда все в порядке

ping google.ru
if errorlevel 0 goto end
echo FAIL
goto end
echo OK
:end
В данном коде echo OK никогда не отработает…
Исправленная версия:

ping google.ru
if errorlevel 0 goto OK
echo FAIL
goto end
:OK
echo OK
:end
pause

Вот пример результатов, когда это не срабатывает:

C:\>ping google.ru

Pinging google.ru [74.125.77.104] with 32 bytes of data:

Request timed out.
Request timed out.
Reply from 192.168.1.1: Destination net unreachable.
Reply from 192.168.1.1: Destination net unreachable.

Ping statistics for 74.125.77.104:
Packets: Sent = 4, Received = 2, Lost = 2 (50% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>if errorlevel 0 goto OK

C:\>echo OK
OK

C:\>pause
Press any key to continue...

C:\>ping google.ru

Обмен пакетами с google.ru [209.85.229.104] по 32 байт:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.

Статистика Ping для 209.85.229.104:
Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь),

C:\echo %errorlevel%
1
Видимо когда модем посылает ответ Reply from 192.168.1.1: Destination net unreachable, ping не считает это за ошибку.
Насколько знаю, в PowerShell имеется соответствующий командлет.
Кстати, если канал отвалился недавно, то пинг может отресолвить хост, но пинги не дойдут, т.е. errorlevel = 0, а результат таймаут.
в скрипте есть проверка для подобного случая:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
По моему вы не правы. ErrorLevel будет 0 только в том случае, если ВСЕ пинги вернутся к вам
Да, я оказался прав. В Windows XP SP3:
errorlevel становится в данном случае равен 1
спасибо, если не сложно то могли бы для *nix написать?
> Средствами Windows XP достаточно проблематично запускать скрипт каждые 5 минут.
Планировщик заданий не осилили?
Панель управления > Назначенные задания > Добавить задание
Там нет возможности запусткать каждые 5 мин. Ежедневно — да


И все таки не осилили.
Да, заходил, видел.
Не понравилось. Видимо вопрос вкуса.
Спасибо, что не поленились неделать скринов.
UFO just landed and posted this here
Спасибо за решение, оно мне поможет сильно. Только есть одно но. У меня модем стоит за роутером. Висит на wan дырке. И я не могу до него добраться :( Никто случайно ip не знает? Я пробивался как-то раньше, а сейчас не получается. Прошивка роутера dd-wrt. Там что-то типа 192.168.100.1 было, кажется.
UFO just landed and posted this here
Не даёт ничего:

1: guard (192.168.1.104) 0.183ms pmtu 1500
1: — (192.168.1.1) 1.591ms
1: — (192.168.1.1) 1.346ms
2: — (192.168.1.1) 1.349ms pmtu 1492
2: 212.124.0.1 (212.124.0.1) 54.847ms

И дальше интеренет. 192.168.1.1 — ip роутера самого.
Сам работаю у провайдера, среди прочего предлагаем ADSL, иногда ребут модема клиента не помогает, приходится дергать порт на DSLam-е. Редко, но бывает. Оборудование — Paradyne IP 4200.
А почему бы ppoe на компе не поднять? Там в настройках есть пункт — перезвонить при разрыве сессии.
Ну, вообще-то модем с WiFi и в режим бриджа его загонять ни разу не нужно.
И проблема в том, что модем не видит разрыва сессии, не знаю почему.
Менял модемы, не помогло. Ясно только, что проблема на стороне провайдера.
UFO just landed and posted this here
вот так реализовано у меня:
в крон
*/5 * * * * ~/bin/ping_test >/dev/null 2>&1

— ping_test — #!/bin/sh
/bin/ping -c3 -i1 $GW

test=$?

if [ $test -ne 0 ]; then
~/bin/modem
fi

— modem — #!/usr/bin/expect -f
spawn telnet $modem_ip
expect «login:» { send «admin\n»}
expect «Password:» { send «my_password\n»}
expect "#" {send «reboot\n»}
expect "#" {send «exit\n»}

еще вопрос, если на модеме pppoe то зачем модем перезагружать, достаточно pppoe опустить и поднять.
Выйдет гораздо быстрее…

У меня стоит модем роутером держит pppoe за ним wifi роутер бриджом. Возникла идея натравить их друг на друга. Когда нет инета wifiроутер перезапускает пппое на модеме. Когда wifiроутер подвис модем перезапускает роутер.
Sign up to leave a comment.

Articles