Скрипт удалённой перезагрузки 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:
на форуме http://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 — все было замечательно, пока не обновился…

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *