Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/70: Рейтинг темы: голосов - 70, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
VBS

Скрипт для перезагрузки роутера по значению внешнего IP

11.01.2021, 23:52. Показов 16254. Ответов 227
Метки vbs (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Ребята, нужен скрипт перезагрузки роутера, если первый октет внешнего адреса имеет значение 100. Перезагружать пока первый октет имеет значение 100 (или можно ограничиться 10 перезагрузок с проверкой и затем, если не изменился, то повторить перезагрузку через некоторое время).
Я не программист. Поискав, нашел некоторые намётки. Можно через TELNET организовать перезагрузку, кусочек скрипта уже опробовал, работает. А вот с проверкой условия труднее. Есть вроде бы вариант через IFCONFIG получить внешний ppp0 inet addr.
Не пинайте, если не в той теме обратился.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2021, 23:52
Ответы с готовыми решениями:

Файл или скрипт для автоматической перезагрузки роутера
Ребята помогите написать исполняемый файл или рабочий скрипт для автоматической перезагрузки роутера в ОС Windows. Сам не могу. Как делую: ...

Скрипт перезагрузки роутера при разрыве коннекта
Доброго времени, уважаемые знатоки. Хочу отредактировать скрипт для ADSL QDSL-1040WU-FON, перезагрузки роутера при разрыве коннекта. ...

Батник для перезагрузки роутера
Добрый день подскажите как написать батник перегрузки роутера

227
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
01.02.2021, 18:38  [ТС]
Студворк — интернет-сервис помощи студентам
Kubuntovod, проверил ваш код по всем указаниям.
Запускал код напрямую, отработал с выдачей ощибки в системном окне.
Запустил через cscript, работает без ошибок. После запуска активируется ещё одно окно с telnet сессией, а в начальном окне с командной строкой ожидается нажатие ENTER. При любом действии на TELNET консоль, она скрывается. Ребутится роутер. После ребута смотрю на IP в веб-панеле. Затем активирую ENTER для командной строки. Появляется окно с числом первого октета. Если это число 85, а на веб-панели 100, то роутер должен ребутиться, что и происходит. И после ребута всё повторяется. НО, когда на веб-панели образовался IP с 46, то по ENTER скрипт выдал опять же 85 (?). Хотя внешние сайты так же видят IP как начинающийся на 46.

Добавлено через 5 минут
Цитата Сообщение от FlasherX Посмотреть сообщение
Роутер не перезапускается?
Нет. Вообще глухо.
Цитата Сообщение от FlasherX Посмотреть сообщение
не предлагал ничего делить
Делаю (грёбаный Т9 ).
Цитата Сообщение от FlasherX Посмотреть сообщение
Какие такие диалоговые окна?
Ну там же в скрипте: "смена IP" и "смена URL". Они вообще молчат. Про URL думаю, что это если сервер для проверки сдох, может и не сообщать. Но сообщение, что IP сменился не всегда срабатывает.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
01.02.2021, 19:10  [ТС]
FlasherX, после первой перезагрузки роутера, скрипт продолжает кидать данные для ввода в консоли telnet во все другие открытые приложения с активными полями ввода. Например, у меня открыт редактор кода, и в него тоже начинают лезть эти данные. Я перешел в дополнительное новое окно, чтобы не засоряло написанный код, и в скриншоте можете видеть результат, что стало туда лезть
Миниатюры
Скрипт для перезагрузки роутера по значению внешнего IP  
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,811
01.02.2021, 19:13
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Нет. Вообще глухо.
Попробуйте ещё /ent после 23 добавить.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Ну там же в скрипте: "смена IP" и "смена URL".
В последнем такого нет.
Вы на мой второй вопрос почему не ответили?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
во все другие открытые приложения с активными полями ввода.
Вы уверены, что используете последнюю версию?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
01.02.2021, 19:27  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Вы уверены, что используете последнюю версию?
Последняя версия у меня начинается с поста №128. Верно?
Цитата Сообщение от FlasherX Посмотреть сообщение
Попробуйте ещё /ent после 23 добавить
Так же, моргает курсор на новой строке и всё.

Добавлено через 2 минуты
Цитата Сообщение от FlasherX Посмотреть сообщение
Вы на мой второй вопрос почему не ответили?
Это про задержку в 28 строке? Пробовал даже 1000, ничего не изменилось.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,811
01.02.2021, 19:45
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Верно?
Верно.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
во все другие открытые приложения
Вы, случаем, вызванную скриптом консоль сами не закрывали? Просто это ну очень странно. У меня при переходе в другие окна стабильно активируется эта консоль и данные вводятся в неё.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
01.02.2021, 20:49
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Do
    Call RebootRouter    'Вызываем функцию, которая ребутит роутер
    WScript.Sleep 10000    'Ждём 10 секунд
    'WScript.Echo "Press [ENTER] to continue..."    'Ждём нажатие клавиши Enter
    'WScript.StdIn.ReadLine
Loop Until GetExtIP    'Если функция GetExtIP возвращает True, прекращаем цикл, иначе начинаем сначала
 
Sub RebootRouter()
    Set WshShell = WScript.CreateObject("WScript.Shell")
 
    WshShell.Run "telnet 192.168.0.1",9
    WScript.Sleep 500
    WshShell.SendKeys "admin"
    WshShell.SendKeys "{ENTER}"
    WScript.Sleep 500
    WshShell.SendKeys "12345"
    WshShell.SendKeys "{ENTER}"
    WScript.Sleep 500
    WshShell.SendKeys "reboot"
    WshShell.SendKeys "{ENTER}"
End Sub
 
Function GetExtIP()
    Dim a
    GetExtIP = True    'Присваиваем значение для возврата
    Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    XMLHTTP.Open "GET", "http://ipinfo.io/ip", True
    XMLHTTP.send
    XMLHTTP.waitForResponse = True
    GetHTMLSource = XMLHTTP.responseText
    a = Split(XMLHTTP.responseText, ".")    'Разбиваем ответ по разделителю "точка" в массив
    'MsgBox(a(0))
    If a(0) = "85" Then GetExtIP = False    'Если первый элемент массива равен 85, присваиваем переменной возврата False
    Set XMLHTTP = Nothing
End Function
У меня работает. Конечно, процедуру ребута закомменчиваю.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
02.02.2021, 00:49  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Ждём 10 секунд
Это на перезагрузку роутера ожидание?
А скрипт с самого первого действия проверяет текущий IP на пригодность или сразу ребут запускает,а самому надо запускать скрипт по причине того, что IP не тот?

Добавлено через 2 часа 17 минут
Цитата Сообщение от FlasherX Посмотреть сообщение
вызванную скриптом консоль сами не закрывали?
Не закрывал. Вот сейчас запустил скрипт. Сразу пошла перезагрузка роутера, хотя IP был уже нужный (на 46 начинался) и сообщение в окошке вылезло, что IP изменился на 46.ххх.ххх.ххх. В окошке ткнул ОК и консоль тоже закрылась вместе с ним.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,811
02.02.2021, 03:47
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Сразу пошла перезагрузка роутера, хотя IP был уже нужный (на 46 начинался)
Думал, так и надо. Это поправлю, как с остальным разберёмся.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
В окошке ткнул ОК и консоль тоже закрылась вместе с ним.
Логично. Но само окошко, как я дважды сообщал, только для тестов, чтобы видеть результат. На нём заострять внимание не нужно.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
02.02.2021, 04:14
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Это на перезагрузку роутера ожидание?
Да. Поставьте там, сколько ему надо, когда он в себя приходит.

Цитата Сообщение от KOHTAKT Посмотреть сообщение
А скрипт с самого первого действия проверяет текущий IP на пригодность или сразу ребут запускает,а самому надо запускать скрипт по причине того, что IP не тот?
Ребутит. Если сначала надо проверить, то первой строкой скрипта пропишите
Visual Basic
1
If GetExtIP Then WScript.Quit
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
02.02.2021, 10:47  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Если сначала надо проверить
Конечно надо, зачем же мне с уже хорошего IP спрыгивать. Ведь в том и задача, чтобы потом этот скрипт в планировщик системы закинуть и он выполнялся после загрузки системы, ну и, может быть, иногда проверял через какие-то промежутки времени. Были случаи, когда цеплялся за хороший IP и через некоторое время связь обрывалась, и меня будто бы принудительно закидывали на IP c началом на 100.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
02.02.2021, 17:06
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Ведь в том и задача, чтобы потом этот скрипт в планировщик системы закинуть и он выполнялся после загрузки системы, ну и, может быть, иногда проверял через какие-то промежутки времени.
Согласен. Если автоматизировать, то полностью.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
If GetExtIP Then WScript.Quit    'Если ip уже "правильный", то выходим из скрипта
 
Do
    Call RebootRouter    'Вызываем функцию, которая ребутит роутер
    WScript.Sleep 120000    'Ждём 120 секунд, пока роутер очухается после ребута
    'WScript.Echo "Press [ENTER] to continue..."    'Ждём нажатие клавиши Enter
    'WScript.StdIn.ReadLine
Loop Until GetExtIP    'Если функция GetExtIP возвращает True, прекращаем цикл, иначе начинаем сначала
 
Sub RebootRouter()
    Set WshShell = WScript.CreateObject("WScript.Shell")
 
    WshShell.Run "telnet 192.168.0.1",9
    WScript.Sleep 500
    WshShell.SendKeys "admin"
    WshShell.SendKeys "{ENTER}"
    WScript.Sleep 500
    WshShell.SendKeys "12345"
    WshShell.SendKeys "{ENTER}"
    WScript.Sleep 500
    WshShell.SendKeys "reboot"
    WshShell.SendKeys "{ENTER}"
End Sub
 
Function GetExtIP()
    Dim a
    GetExtIP = True    'Присваиваем значение для возврата
    Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    XMLHTTP.Open "GET", "http://ipinfo.io/ip", True
    XMLHTTP.send
    XMLHTTP.waitForResponse = True
    GetHTMLSource = XMLHTTP.responseText
    a = Split(XMLHTTP.responseText, ".")    'Разбиваем ответ по разделителю "точка" в массив
    'MsgBox(a(0))
    If a(0) = "85" Then GetExtIP = False    'Если первый элемент массива равен 85, присваиваем переменной возврата False
    Set XMLHTTP = Nothing
End Function
Закомментченные строки оставил для отладки.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
02.02.2021, 22:49  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
WScript.Sleep 120000 'Ждём 120 секунд, пока роутер очухается после ребута
45 сек уже достаточно, чтобы не впасть самому в анабиоз
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
04.02.2021, 00:42  [ТС]
Kubuntovod, последняя редакция скрипта вроде бы работала. Запустил сейчас для проверки, IP был нужный (начинался на 5), скрипт ничего не выполнял. Пересел после перезагрузки роутера на IP начинающийся на 100. Скрипт при запуске один раз ребутит роутер, в telnet консоли пишется "соединение потеряно" и курсор мигает на новой строке. Больше ничего не происходит, хотя IP с адресом 100 после перезагрузки остался.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
04.02.2021, 09:52
Script.vbs:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
If GetExtIP Then
    WScript.Echo "Very beautiful IP. Ueben the bitte"
    WScript.Quit    'Если ip уже "правильный", то выходим из скрипта
End If
 
Do
    WScript.Echo "Send reboot command to router"
    Call RebootRouter    'Вызываем функцию, которая ребутит роутер
    WScript.Sleep 10000    'Ждём 120 секунд, пока роутер очухается после ребута
    'WScript.Echo "Press [ENTER] to continue..."    'Ждём нажатие клавиши Enter
    'WScript.StdIn.ReadLine
Loop Until GetExtIP    'Если функция GetExtIP возвращает True, прекращаем цикл, иначе начинаем сначала
 
Sub RebootRouter()
    Set WshShell = WScript.CreateObject("WScript.Shell")
 
    WshShell.Run "telnet 192.168.0.1",9
    WScript.Sleep 500
    WshShell.SendKeys "admin"
    WshShell.SendKeys "{ENTER}"
    WScript.Sleep 500
    WshShell.SendKeys "12345"
    WshShell.SendKeys "{ENTER}"
    WScript.Sleep 500
    WshShell.SendKeys "reboot"
    WshShell.SendKeys "{ENTER}"
End Sub
 
Function GetExtIP()
    Dim a
    GetExtIP = True    'Присваиваем значение для возврата
    Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    XMLHTTP.Open "GET", "http://ipinfo.io/ip", True
    XMLHTTP.send
    WScript.Sleep 1000
    ResText = XMLHTTP.responseText
    WScript.Echo "Current external IP = " & ResText
    a = Split(ResText, ".")    'Разбиваем ответ по разделителю "точка" в массив
    WScript.Echo "First oktet external IP = " & (a(0))
    If a(0) = "85" Then GetExtIP = False    'Если первый элемент массива равен 85, присваиваем переменной возврата False
    Set XMLHTTP = Nothing
End Function
В процедуре ребута закомменчиваю все строки, кроме создания объекта и запуска телнета. Вот так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub RebootRouter()
    Set WshShell = WScript.CreateObject("WScript.Shell")
 
    WshShell.Run "telnet 192.168.0.252",21
    ' WScript.Sleep 500
    ' WshShell.SendKeys "admin"
    ' WshShell.SendKeys "{ENTER}"
    ' WScript.Sleep 500
    ' WshShell.SendKeys "12345"
    ' WshShell.SendKeys "{ENTER}"
    ' WScript.Sleep 500
    ' WshShell.SendKeys "reboot"
    ' WshShell.SendKeys "{ENTER}"
End Sub
Открываю cmd и запускаю так:
Windows Batch file
1
cscript script.vbs
Получаю такой выхлоп (см. скрин). Поэтому, в свете вышесказанного, не понимаю, о какой консоли телнета идёт речь.

Поставил задержку, после запроса ip.

Пусть ip Вас не смущает. Это я заменил, чтобы свой не светить.
Миниатюры
Скрипт для перезагрузки роутера по значению внешнего IP  
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
04.02.2021, 13:41  [ТС]
Kubuntovod, у меня всегда после запуска скрипта запускается окно на весь экран с заголовком "telnet 192.168.0.1" в котором логинится, выполняет команду ребута, появляется строка "Подключение к узлу утеряно" после которой ниже мигает курсор. При нажатии на любую клавишу это окно пропадает. Почему у вас его нет? Может его как-то принудительно сворачивать?
А в остальном сейчас окно с командной строкой так же отображает ход смены IP, как и на вашем скриншоте.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
04.02.2021, 14:05  [ТС]
Kubuntovod,
Миниатюры
Скрипт для перезагрузки роутера по значению внешнего IP  
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
04.02.2021, 14:15  [ТС]
FlasherX, вы ушли из темы?
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
04.02.2021, 16:51
Цитата Сообщение от KOHTAKT Посмотреть сообщение
А в остальном сейчас окно с командной строкой так же отображает ход смены IP, как и на вашем скриншоте.
Пофигу на всё то, что было ранее. Сейчас выглядит хорошо (и заголовок у окна: cmd - ярлык). А адрес на 178 - это "хороший"?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
04.02.2021, 18:40  [ТС]
Kubuntovod, столкнулся ещё с одной ситуацией, мешающей нормальной работе скрипта. На скриншоте завершение работы скрипта. При этом в трее на значке сетевого подключения был желтый треугольник. Затем я больше ничего не запускал для перезагрузки роутера, только запустил браузер, чтобы открыть веб панель роутера, и значок "исправился", соединение установилось. Но IP был на 100. Как-то можно сделать проверку такой ситуации, чтобы скрипт не остановился?
Миниатюры
Скрипт для перезагрузки роутера по значению внешнего IP  
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
04.02.2021, 18:42  [ТС]
Цитата Сообщение от KOHTAKT Посмотреть сообщение
у меня всегда после запуска скрипта запускается окно на весь экран с заголовком "telnet 192.168.0.1"
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Может его как-то принудительно сворачивать?
И с этим что-нибудь можно сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2021, 18:42

Файл для автоматической перезагрузки роутера
Ребята помогите написать исполняемый файл для автоматической перезагрузки роутера. Сам не могу. Как делую: комадная строка-telnet...

Файл для автоматической перезагрузки роутера
Ребята помогите написать исполняемый файл или рабочий скрипт для автоматической перезагрузки роутера в ОС Windows. Сам не могу. Как делую: ...

Батник для перезагрузки роутера через Telnet
Подскажите как написать или ссылочку на готовый батник для перезагрузки роутера dlink. последовательность проста: подключится по айпи ...

VBS скрипт для перезагрузки ALTUSEN
Доброго всем вечера. Толковые люди данного форума подскажите кто чем может. Ни как не могу разобратся с вопросом. Предисловие: Есть...

Как написать скрипт для автоматического входа на сайт роутера?
Возможно ли на PHP написать какой-нибудь скрипт для входа на сайт роутера (192.168.1.1), ввод логина и пароля: admin, и нажатие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru