Скрипт удалённой перезагрузки WI-FI роутера TP-LINK TL-WR1042ND

Как оказалось, в гигабитном роутере TP-LINK TL-WR1042ND нет управления при помощи консоли. Но роутеры, как известно, иногда виснут. Точнее, сам роутер продолжает работать и откликаться на команды управления из админки и VPN показывает, что он подключен, но интернет при этом не доступен. Иногда это происходит по вине самого устройства, иногда проблемы со стороны провайдера, и перезагрузка часто решает проблему. При чем, желательно, чтобы это происходило автоматически. Поэтому было принято решение перегружать роутер при помощи HTTP GET запроса…

После непродолжительного исследования были найдены такие команды:

Разорвать VPN соединение:

http://login:pass@192.168.0.1/userRpm/StatusRpm.htm?Disconnect=Disconnect&wan=1

Подключить VPN:

http://login:pass@192.168.0.1/userRpm/StatusRpm.htm?Connect=Connect&wan=1

Перезагрузить роутер:

http://login:pass@192.168.0.1/userRpm/SysRebootRpm.htm?Reboot=1

Но, как оказалось, управлять этими командами роутером напрямую не получается. Они работают только при авторизации в админке роутера через браузер и то только можно увидеть их выполнение с помощью firebug, а напрямую, при вводе в адресную строку работает только команды дисконнекта/коннекта VPN. Команды срабатывают, но при этом все равно выдается ошибка. Перезагрузить роутер таким образом не получается.

Мгновенно выскакивает «You have no authority to access this router!» и ничего не происходит.

Самое интересное, что так:

http://login:pass@192.168.0.1/userRpm/StatusRpm.htm?Disconnect=Disconnect&wan=1

выдает ту же ошибку, но с некоторой задержкой, а запрос выполняется — т.е. wan отключается.

При этом в админку входит по ссылке с прописанной авторизацией: http://login:pass@192.168.0.1 и управление из админки дальше работает!

Перезагрузка из Linux

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

wget --http-user=login --http-password=pass --post-data="reboot=true" http://192.168.0.1/userRpm/SysRebootRpm.htm

ошибка:

Connecting to 192.168.0.1:80... connected.
HTTP request sent, awaiting response... 401 N/A
Reusing existing connection to 192.168.0.1:80.
HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9
Length: unspecified
Saving to: `SysRebootRpm.htm'

К тому же, при помощи wget не удавалось даже выполнить Disconnect/Connect VPN.

На русском форуме TP-LINK была открыта тема, но в результате обсуждения, решения найти не удалось.
Английская техподдержка на запрос «How i can reboot my device by bash script?»
ответила следующее: «this is not possible to reboot devices in a such way».
Ticket#2013101610000131

Решение все же было найдено. Не вдаваясь в подробности скажу что роутер при GET запросе проверяет:

  1. Http basic авторизацию.
  2. User-Agent браузера.
  3. Корректное поле рефер, которое всегда будет просто http://IP адресом роутера, т.к. роутер использует редиректы.

Cookie для авторизации не используются.

С этим всем отлично справляется команда curl.

Скрипт перезагрузки роутера

Итак, привожу скрипт перезагрузки роутера, который у меня получился:

#!/bin/sh
WATCHED_IP="8.8.8.8"
ROUTER_IP="192.168.0.1"
USERNAME="login"
PASSWORD="pass"

# watch for remote host
ping -q -c 1 "$WATCHED_IP" > /dev/null && exit

# exit if router is down
ping -q -c 1 "$ROUTER_IP" > /dev/null || exit

curl --basic --user "$USERNAME:$PASSWORD" -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" --refer "http://$ROUTER_IP" "$ROUTER_IP/userRpm/SysRebootRpm.htm?Reboot=reboot"

Соответственно, скрипт реконнекта VPN:

#!/bin/sh
WATCHED_IP="8.8.8.8"
ROUTER_IP="192.168.0.1"
USERNAME="login"
PASSWORD="pass"

# watch for remote host
ping -q -c 1 "$WATCHED_IP" > /dev/null && exit

# exit if router is down
ping -q -c 1 "$ROUTER_IP" > /dev/null || exit

curl --basic --user "$USERNAME:$PASSWORD" -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" --refer "http://$ROUTER_IP" "$ROUTER_IP/userRpm/StatusRpm.htm?Disconnect=Disconnect&wan=1"
#sleep 1
curl --basic --user "$USERNAME:$PASSWORD" -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" --refer "http://$ROUTER_IP" "$ROUTER_IP/userRpm/StatusRpm.htm?Connect=Connect&wan=1"

Поставил в cron скрипт реконнекта при отсутствии пинга dns гугля — проверка каждые 3 минуты.
Скрипт перезагрузки проверяет наличие интернета каждые 15 минут.

login:pass, конечно, нужно будет поставить свои. Файлы скриптов назвать, например, tplink_reboot.sh и tplink_reconnect.sh, сохранить на сервере, дать права на выполнение и добавить в планировщик.

Уже пару раз выручило:
tplink_reconnect.zip
tplink_reboot.zip


PS:
на форуме https://forum.tp-linkru.ru Scorokhod поделился своим вариантом перезагрузки роутера при помощи WGET, за что ему огромное спасибо:

wget --http-user=%login% --http-password=%password% --user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" --referer=http://%router_ip%/userRpm/SysRebootRpm.htm http://%router_ip%/userRpm/SysRebootRpm.htm?Reboot=1

Вместо «login», «password» и «router_ip» подставить соответственно логин, пароль и IP маршрутизатора без кавычек и процентов 🙂

WGET для Windows можно взять здесь: http://gnuwin32.sourceforge.net/packages/wget.htm, качать нужно «Complete package, except sources — Setup».

Перезагрузка из Windows

Готовая сборка Wget + Bat скрипт для перезагрузки (только перегружает):
скачать tplink_reboot_wget.zip (подходит для большинства моделей Tplink, не только WR1042ND)

Перезагрузка из Android

(спасибо за этот код neolead)

Для андроид в данном изложении требуется root. Если нет рута.. то в конце checknet заменить на step1

—manual
Requirements:

Установить Busybox https://play.google.com/store/apps/deta … on.busybox
и Android Terminal emulator https://play.google.com/store/apps/deta … ndroidterm
—to do list
Перемонтировать/system на запись «su -c mount rw,remount /system»
Поместить допустим в /system/script,»su -c chmod 0777 /system/script/»
Дать скрипту права на исполнение «su -c chmod 0755 /system/script/ping2.sh»
Добавить в автозапуск в настройках терминала.

у меня работает в машине как переподключение,затем перезагрузка wifi после трёх фейлов…

-----ping2.sh
#!/system/bin/sh
pingip=8.8.8.8
login=admin #Username
password=admin #Password
router_ip=192.168.0.1 #Ip of router
sleep_time=30 #Time to next check
sleep_rbt_time=70 #Time to waiting of reboot
f1=10 #First pause in sec
f2=30 #Second pause in sec
increment=0
b64_auth=$(echo $login:$password | base64|rev|cut -c 2-|rev)
network=toyota #SSID name of wifi

while true
do

function checknet()
{
ssid=0
while [ "$ssid" != "$network" ]
do
ssid=$(su -c dumpsys wifi|grep "* ID:"|cut -f 2 -d \")
echo ssid=$ssid
echo network=$network
if [ "$ssid" = "$network" ]; then
echo "Correct Wifi Network"
else
echo "False Wifi Network,press Enter key"
read -rs
fi
done
}

function slp()

{
increment=0
echo "will sleep $sleep_time sec"
sleep $sleep_time #check again
}

function wifi_conn()
{
echo modem reconnect
printf "GET /userRpm/StatusRpm.htm?Disconnect=Disconnect&wan=1 HTTP/1.0\r\nReferer: http://$router_ip/userRpm/StatusRpm.htm\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.1.1650.63 Safari/537.36\r\nAccept: */*\r\nHost: $router_ip\r\nConnection: Keep-Alive\r\nAuthorization: Basic $b64_auth=\r\n\r\n"|nc -w 5 -i 1 $router_ip 80 >/dev/nul
printf "GET /userRpm/StatusRpm.htm?Connect=Connect&wan=1 HTTP/1.0\r\nReferer: http://$router_ip/userRpm/StatusRpm.htm\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.1.1650.63 Safari/537.36\r\nAccept: */*\r\nHost: $router_ip\r\nConnection: Keep-Alive\r\nAuthorization: Basic $b64_auth=\r\n\r\n"|nc -w 5 -i 1 $router_ip 80 >/dev/nul
}

function wifi_rst()
{
#echo LOGIN:$b64_auth=
increment=$(( $increment +1 ))
echo Reboot Times=$increment

if [ "$increment" -eq 3 ]; then
echo "We Already Reboot = $increment times"
echo "We Stop Rebooting"
read -rs $'Press any key to continue monitoring...\n' -n1 key
else
printf "GET /userRpm/SysRebootRpm.htm?Reboot=1 HTTP/1.0\r\nReferer: http://$router_ip/userRpm/SysRebootRpm.htm\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.1.1650.63 Safari/537.36\r\nAccept: */*\r\nHost: $router_ip\r\nConnection: Keep-Alive\r\nAuthorization: Basic $b64_auth=\r\n\r\n"|nc -w 5 -i 1 $router_ip 80 >/dev/nul
echo "Now reboot request was send,will sleep $sleep_rbt_time sec"
sleep $sleep_rbt_time
fi
}
checknet

if ping -c 1 $pingip >/dev/null
then
echo "all good step 1"
slp
else
if ping -c 1 $router_ip >/dev/null
then
echo Router is pinging - channel is down
else
echo Router is down - channel is down
increment = 3
wifi_rst
fi
echo Bad Ass step 1 - will wait $f1 sec!
sleep $f1 #give it a few seconds to complete
fi

if ping -c 1 $pingip >/dev/null
then
echo "all good step 2"
slp
else
echo Bad Ass step 2 - will wait $f2 sec!
sleep $f2 #give it a few seconds to complete
fi

if ping -c 1 $pingip >/dev/null
then
echo "all good step 3 "
slp
else
wifi_conn
echo Bad Ass step 3 - Reconnect!
wifi_conn
fi

if ping -c 1 $pingip >/dev/null
then
echo "all good step 4 "
slp
else
echo Bad Ass step 3 - Reconnect!
wifi_rst
fi
done

One thought on “Скрипт удалённой перезагрузки WI-FI роутера TP-LINK TL-WR1042ND

  1. у меня каждый день в 00.04 перегружается роутер и пропадает сеть на 1 минуту. модель TP link — TL-WR340GD. провайдер говорит что к ним это никакого дела не имеет. в настройках роутера по этому времени ничего нету. помогите разобраться — заранее благодарен (можете опубликовать может у кого то тож такие проблемы)

    1. попробуй сменить время во всей квартире и в роутере. если будет по новому времени перезагружаться значит провайдер не виноват!

  2. дак под виндоус то как запускать?
    ну скачал, ну установил wget а дальше то что? что куда вводить чтобы заработало?

    1. anatoly, wget работает в режиме командой строки. Т.е. для использования можно или написать .bat файл, или создать ярлык с параметрами.

  3. не работает!!!

    c:\Program Files (x86)\GnuWin32\bin>wget.bat

    c:\Program Files (x86)\GnuWin32\bin>wget —http-user=xxx —http-password=xxx
    —user-agent=»Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, li
    ke Gecko) Chrome/31.0.1650.63 Safari/537.36″ —referer=http://192.168.1.1/userRp
    m/DateTimeCfgRpm.htm http:/192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=1
    SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
    syswgetrc = c:\Program Files (x86)\GnuWin32/etc/wgetrc
    —2015-04-07 18:43:55— ftp://http//192.168.1.1/userRpm/SysRebootRpm.htm?Reboot
    =1
    => `.listing’
    Распознаётся http… сбой: No data record of requested type.
    wget: невозможно распознать адрес `http’
    unlink: No such file or directory

    ну и че он ftp:// добавил перед http:// ?

    1. Вечером проверю. Я все делал в Ubuntu и использовал curl, а не wget. С wget у меня изначально не получалось. Проверю под Windows — отпишусь.

  4. Так же не работает, вот лог из cmd, помогите пожалуйста

    C:\Users\bmite>wget —http-user=%admin% —http-password=%admin% —user-agent=»Mo
    zilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/
    31.0.1650.63 Safari/537.36″ —referer=http://%192.168.10.1%/userRpm/SysRebootRpm
    .htm http://%192.168.10.1%/userRpm/SysRebootRpm.htm?Reboot=1
    SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
    syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
    —2015-04-08 12:57:49— http://%192.168.10.1%25/userRpm/SysRebootRpm.htm?Reboot
    =1
    Распознаётся 312.168.10.1%… сбой: No data record of requested type.
    wget: невозможно распознать адрес `↓2.168.10.1%’

        1. Я хотел сказать с отдельного компьютера — сервера, который работает в режиме 24/7. Хотя, не у всех такое имеется, но для них и автоматическая перезагрузка роутера не так важна.

  5. Спасибо большое.
    tplink MR3020. На прошивке 130xxx работает вариант с wget, проверил на двух роутерах с прошивками 130123 и 130-какой-то (не помню).
    В серии 140xxx через C# и сниффер выкручивались.

  6. Добавил в конце статьи архив, содержащий готовую сборку Wget + bat скрипт автоматической перезагрузки.

  7. 1. Если не поправить все некорректно указанные в примере двойные кавычки (» и »), возникает ошибка:
    ping: unknown host «8.8.8.8»
    ping: unknown host «192.168.1.2»

    2. Если кавычки поправить, возникает другая ошибка:
    13: /home/tvbung/Загрузки/router.sh: Syntax error: «(» unexpected

  8. Наконец-то оформил статью для удобочитаемого вида. Кроме того, проверил скрипт перезагрузки из Windows на роутере TL-WR840 — работает!

  9. Здравствуйте. Скачал, распаковал, в Reboot Router указал логин и пароль (admin,admin), запускаю wget.exe от имени администратора, ничего не происходит. Windows 10, TD-W3151N. Роутер не подходящий? Или что-то не так делаю?

     

    1. Запускать нужно Reboot Router, из него происходит вызов wget.exe с нужными параметрами.
      Права админа в Windows для этого скрипта необязательны.

      1. Запускаю, выдаёт это:

        *****************************************************
        ROUTER REBOOTED
        *****************************************************
        Press any key to Exit

        Но роутер не ребутится.

        1. 1. Задавайте Login и Password без кавычек.
          set Login=admin
          set Password=admin

          2. Попробуйте варианты задачи IP:
          set IP=192.168.1.1
          или
          set IP=192.168.0.1

  10. Спасибо большое, искал очень долго и вот помогла ваша «Готовая сборка». главное все в файле заменить)

  11. у меня не работает
    Запускаю, выдаёт это:

    *****************************************************
    ROUTER REBOOTED
    *****************************************************
    Press any key to Exit

    Но роутер не ребутится.

    1. Заполните правильно(!) в файле Reboot Router.bat следующие переменные:
      set IP=192.168.0.1
      set Login=admin
      set Password=admin

  12. Вот такой вопрос…
    Я запустил этот самый bat для rebootА роутера и ребут произошёл.
    Захотел сделать это в виде ежедневной задачи и всё настроил.
    Но почему-то, сколько бы я сейчас не пробовал запустить этот скрипт заново, ничего не выходит!
    Мистика какая-то!
    Помогите!

    1. Возможно, Вы в диспетчере задач (планировщике) не указали папку в которой лежат исполняемые файлы.

    2. То же самое и у меня происходит — в ручном режиме скрипт работает, и ребутит роутер, но если его запускает планировщик — то выпадает черное окошко о ЯКОБЫ выполнении скрипта, но роутер по факту не перегружается… чо за фигня???

    3. Разобрался )) Автор прав — нужно указать не только САМ бат-файл, а еще и папку с исполняемыми файлами, чтобы все эти фалы были задействованы вместе! Все работает, СПАСИБО!

  13. Не проходит перезагрузка в роутере mr3020. Операционная система: windows 7. Параметры настроены верно, т.е. и ip и логин с паролем. Но вот перезагрузки почему-то не происходит 🙁

    1. На mr3020 скрипт не тестировался. Скорее всего, там совершенно другая админка с другими адресами ссылок на перезагрузку.

      1. Спасибо за ответ! Да, на другом Tp-link роутере работает вполне норм. Не подскажете ли, в каком направлении копать, чтобы поправить ссылку для именно этой марки роутера? Где можно эту ссылку посмотреть, чтобы изменить код?

        Просто роутер будет стоять у людей, скажем так, несколько далёких от техники 🙂 Поэтому и ищу решение для перезагрузки скриптом.

        1. У меня нет mr3020, поэтому я не смогу переписать и отладить скрипт под него. В моем скрипте строка перезагрузки задается «/userRpm/SysRebootRpm.htm?Reboot=reboot». Насколько я понял, mr3020 поддерживает терминальное подключение, что автоматически снимает необходимость использования программы curl или wget для доступа по http. Вам не подойдет скрипт с этой страницы, точнее, вероятно, его можно адаптировать, но можно проще. Достаточно просто написать скрипт в bat файле. Когда-то давно писал такой скрипт для Dlink.
          П.С.
          Здесь в комментариях mustik писал, что «tplink MR3020 на прошивке 130xxx работает вариант с wget, проверил на двух роутерах с прошивками 140123 и 130xxx. В серии 140408 через C# и сниффер выкручивались.» Т.е. мой скрипт с этой страницы на новой прошивке запустить не удалось.

          1. Может, покажете скрипт для dlink? Я бы постарался адаптировать. Просто вы писали в статье «После непродолжительного исследования были найдены такие команды», но я не совсем понимаю, что скрывается под словом «исследование» 🙂 В какую сторону исследовать? 🙂 Откуда можно выцепить эту команду? Мне хотя бы примерно знать, в какую сторону копать нужно, а там бы уже постарался бы найти.

          2. Пока что откопал только Bash скрипт для линукса (ubuntu/debian). Хотя когда-то делал и для обычного bat/cmd через telnet без vbs скриптов.

            #!/bin/sh
            WATCHED_IP="www.ru"
            MODEM_IP="192.168.1.1"
            USERNAME="admin"
            PASSWORD=""
            # watch for remote host
            ping -q -c 1 "$WATCHED_IP" > /dev/null && exit
            # exit if modem is down
            ping -q -c 1 "$MODEM_IP" > /dev/null || exit

            expect - < < EOF set send_slow {1 .1} spawn /usr/bin/telnet "$MODEM_IP" expect -exact "ADSL Router" expect -exact "Login: " send -s -- "$USERNAME\r" expect -exact "Password:" send -s -- "$PASSWORD\r" expect -exact "> "
            send -s "reboot\r"
            expect -exact "The system shell is being reset. Please wait..."
            exit
            EOF

  14. Скачал, запустил — все работает! Но как поместить .bat в планировщик задач с условием выполнения при обрыве связи мозгов не хватает.

  15. Не понимаю ! Запуск .bat из папки нормальный. Из планировщика-никакой реакции. Путь к файлу .bat прописан через «обзор» так что неправильным быть не может. Исполняемый файл лежит в одной папке с .bat. что еще может быть не так ?

      1. прошу прощения! Первый раз работал с планировщиком и не обратил внимание на поле «рабочая папка». Еще бы условие как то подставить при обрыве связи. Не может быть, чтобы в windows в каком нибудь журнале это не отражалось

        1. Проверка на обрыв связи добавьте в начало скрипта:
          ping -q -c 1 "8.8.8.8" > /dev/null && exit
          Теперь Вам нужно только установить интервал выполнения в планировщике — каждые 5, 10 или 15 минут — на Ваше усмотрение. Если пинг не проходит — скрипт перезагрузит роутер.

          1. Спасибо !
            Но, к сожалению, 5 минут меня не устраивают. Специфика работы требует не более одной.

          2. Поставьте в планировщике сколько угодно. Будет каждую минуту проверять. Хотя, проблем может добавить т.к. модем не успеет перегрузиться за минуту и поднять соединение, а скрипт его повторно уже в ребут отправит.

  16. Попробовал в планировщике привязаться к событию BROWSER код 8033. Интересно, что при отключении питания роутера сразу проходит команда на перезагрузку, а при отключении кабеля интернета планировщик не реагирует, несмотря на то, что событие в журнале появляется.

  17. Спасибо автору за статью, реально помогла )) перерыл кучу сайтов ниче не найти или не работает (( а тут все гуд ..

    только про обрыв связи не понял… сюда что ли дописать — Reboot Router.bat

  18. Глядя на все эти мучения убеждаешься, что использование стоковой прошивки — это бег в ластах. В OpenWrt это делается простейшим скриптиком по крону. ИЗНУТРИ роутера (чуствуете разницу?)

  19. Заметил изменения в новых прошивках из-за которых не работает скрипт.
    Например, прошивка 3.16.9 Build 150514 Rel.39242n для роутера TL-WR842ND.
    Если раньше в адресной строке после авторизации было:
    http://192.168.0.1/userRpm/Index.htm
    то теперь стало:
    http://192.168.0.1/SVSJAQKBMSYTYZXB/userRpm/Index.htm
    т.е. сделали:
    http://192.168.0.1/хешфункция/userRpm/Index.htm
    Т.к. «хешфункция» все время разная и генерируется случайно, я пока не знаю как рассчитать команду для перезагрузки, которая тоже должна выглядеть как:
    http://192.168.0.1/WXBGWZPAKBCAAQWB/userRpm/SysRebootRpm.htm?Reboot=Reboot
    т.е.:
    http://192.168.0.1/хешфункция/userRpm/SysRebootRpm.htm?Reboot=Reboot
    Refer при этом:
    http://192.168.0.1/хешфункция/userRpm/SysRebootRpm.htm
    т.е. проверка на корректность Refer уже, скорее всего, происходит, т.к. если после авторизации просто попробовать правильно составить URL для перезагрузки (с учетом хеша) и выполнить его в адресной строке браузера, роутер ругается на отсутствие авторизации и ничего не происходит.
    И последнее — для авторизации стали использоваться куки:
    Имя: Authorization
    Содержимое: Basic%20YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM%3D
    Узел: 192.168.0.1
    Путь: /
    Срок действия истекает: В конце сессии
    К сожалению, все это делает невозможным использование скрипта автоматической перезагрузки.

    1. да, совершенно точно. У меня точка доступа TP-Link TL-WA801ND. Telnet не работает. Никаких конфигураторов или командной строки нет. Данный способ не работает из за генерируемого участка пути.
      Остается на выбор — графический скрипт на сервере: запустить браузер — зайти на страницу — перейти в меню перезагрузки — нажать кнопку reboot; Либо второй вариант — управляемая розетка; Ну есть еще третий вариант — искать кастомную прошивку.

  20. Спасибо большое за подсказку !
    я сделал (на основе Вашего) 2 скриптика один для проверки сети (каждые 3 минуты) а вторым в час ночи перезагружаю принудительно так как у билайна надо переподключаться чтобы трафик с 1-8 часов не считался .
    До этого перезагружал китайский таймер .
    работает на ноуте с linux для перезагрузки TP-Link MR-3420v2(3.16.9 Build 150116 Rel.40997n) + ZTE MF823

    #!/bin/sh
    WATCHED_IP="8.8.8.8"
    ROUTER_IP="192.168.1.1"
    #MODEM_IP="192.168.8.1" #Для будущих экспериментов с вебмордой 4G модема
    USERNAME="name" # Вставить от своего роутера
    PASSWORD="password" # Вставить от своего роутера

    # DISPLAY=:0 gdialog --msgbox "Скрипт работает !" 25 20 > /dev/null # Проверочная строка
    # Проверочная строка для того чтобы знать что скрипт запустился на этапе настройки CRONa
    # Выведет на экран окошечко с надписью что скрипт работает

    # Проверка наличия инета в частности пинг гугла
    ping -q -c 1 "$WATCHED_IP" > /dev/null && exit

    # Проверка пингуется ли роутер
    ping -q -c 1 "$ROUTER_IP" > /dev/null || exit

    # Перезагрузка
    curl --basic --user "$USERNAME:$PASSWORD" -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" --refer "http://$ROUTER_IP" "$ROUTER_IP/userRpm/SysRebootRpm.htm?Reboot=reboot"

  21. Спасибо! Готовая сборка для windows работает. Запихнул в планировщик задачу на запуск bat файла. А то на удаленной точке раз в неделю зависал роутер до момента, пока не ребутнешь вручную =)

    1. Забыл указать, роутер TL-WR841ND
      Версия прошивки:
      3.14.19 Build 130620 Rel.63894n
      Версия оборудования:
      WR841N v8 00000000

  22. WR841N v9 00000000
    Не работает! Там при загрузке ввод пароля и логина уже другой и не может ввести((( Может кто знает как решить проблему?

    1. Как вариант, на Ваш роутер можно поставить прошивку DD-WRT — в ней есть управление с консоли. Нужно только написать или найти под нее скрипт перезагрузки.

  23. Здравствуйте! Подскажите пожалуйста, как сделать такой скрипт для Win7. Роутер Zyxel Keenetic 4G II. У меня как-то наполовину решена проблема перезагрузки в час ночи. Тоже пользуюсь билайном, ночной безлимит. Ночью у меня загружаются торренты, днем смотрю фильмы. Человек я уже немолодой, но все же стараюсь чему-то научиться. Нашла где-то в интернете и прописала в коде файла config период между перезагрузками, равный 24 часа. Всё работает, Я сначала обрадовалась, но сын (живет в другом городе) мне сказал, что если у роутера отключится питание, то отсчет периода начнется с момента нового включения. А это значит, что следующая перезагрузка будет уже явно не в час ночи. Как бы реализовать точную по времени перезагрузку моего роутера на Windows? И свет кстати не редко отключают. Честно, уже устала не спать до часу ночи, чтобы вручную перезагрузить (просто выдергиваю и ставлю обратно модем). Может кто-то может мне ответить: почта***

    1. Елена, здравствуйте! По Zyxel подсказать не могу т.к. у меня нет его в наличии чтобы посмотреть настройки.

  24. Реализовал перезагрузку роутера с помощью SlimerJs/PhantomJs и вот такого скрипта reboot.js:
    var webpage = require('webpage').create();
    webpage.onConsoleMessage = function (msg) {
    console.log(msg);
    };
    var vWidth = 640;
    var vHeight = 480;

    webpage.viewportSize = { width: vWidth, height: vHeight};
    webpage
    .open('http://' + phantom.args[0])
    .then(function(){
    webpage.evaluate(function (username, password) {
    document.getElementById("userName").value = username;
    document.getElementById("pcPassword").value = password;
    document.getElementById("loginBtn").click();
    }, phantom.args[1], phantom.args[2]);
    slimer.wait(1000); // пауза, длительность в миллисекундах
    var page = webpage.evaluate(function () {
    window.frames["bottomLeftFrame"].document.getElementById("a49").click();
    });
    slimer.wait(1000); // пауза, длительность в миллисекундах
    var page = webpage.evaluate(function () {
    window.frames["mainFrame"].document.forms[0].onsubmit = function(){return true;}; :: // убираем confirm, с ним не работает slimerjs
    });
    var page = webpage.evaluate(function () {
    window.frames["mainFrame"].document.getElementById("reboot").click();
    });
    slimer.wait(1000); // пауза, длительность в миллисекундах
    slimer.exit();
    });

    Запускается вся эта красота батником reboot.bat:
    :: ставим кодировку юникода
    chcp 65001
    :: перезагрузка роутера
    call slimerjs.bat reboot.js ip login password

      1. TL-WR940N с последней прошивкой — работает отменно уже больше месяца! 🙂 До их нововведения с рендомным набором букв в адресной строке пользовался скриптом wget — все было замечательно, пока не обновился…

        1. Вечер добрый. Не могли бы Вы подробнее описать настройку системы для работы этого скрипта.

  25. Подскажите умоляю, как из Андроида без рута автоматически перезагружать роутер (модем) D-link 2650 по телнету, когда на нем пропадает интернет?? Андроид постоянно подключён к этому модему.

    1. Я когда-то делал скрипт для D-Link под Linux (Ubuntu/Debian) и Windows.
      Но это было очень давно. Попробую найти эти файлики.
      Терминал, думаю, в андроиде аналогичен по командам Линуксу.

Добавить комментарий

Ваш e-mail не будет опубликован.