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

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

11.01.2021, 23:52. Показов 16183. Ответов 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
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
27.01.2021, 15:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Из telnet после подключения к роутеру в скрипте можно по команде ifconfig забрать на обработку значение адреса?
Выполните команду и смотрите, есть ли там в выхлопе адрес, на который можно опереться
Windows Batch file
1
tracert ya.ru
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Kubuntovod, вашем скрипте If a(0) = 100 Then GetExtIP = True это проверка внешнего адреса? Только он не на 100 тогда должен проверяться (так он видит адрес в панели роутера), как я уже выше писал про это вашему коллеге, а другими сайтами он будет видеться с адресом на 85.
Да, Вы правильно поняли. Почему только один ребут, надо выяснять. Какой был ip до запуска скрипта и какой после. Если после одного ребута первый октет стал 85, то скрипт просто выходит.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
27.01.2021, 15:59  [ТС]
FlasherX, последняя модификация скрипта вообще какая-то вирусная, много "мусора" кидает по всей системе... )))

При запуске логинится, ребутит роутер и потом начинает бесконечное введение строк ip-шника роутера, логина, пароля, команды ребут. Потом попадает на верные данные для поля ввода, опять логинится, ребутится и снова кидает мусор везде, пока не попадет значениями в нужные поля. Причем вводится всё это во все поля ввода всех активных приложений системы (!). Даже когда я открыл блокнот со кодом скрипта, то и туда стал вбрасывать бесконечно эти строки.
Миниатюры
Скрипт для перезагрузки роутера по значению внешнего IP  
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
27.01.2021, 16:23  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
tracert ya.ru
Это я уже много раньше делал, там нет адреса, на который можно опереться.

Цитата Сообщение от Kubuntovod Посмотреть сообщение
Какой был ip до запуска скрипта и какой после.
Я правильно понимаю, что мы получаем значение ip для обработки от внешнего сайта?
ip после запуска скрипта и перезагрузки роутера менялся, но в первом октете всё-равно оставалось 85 (как видит внешний сайт).
Интересно, что я запустил скрипт ещё раз, чтобы проследить изменение ip, он опять после одного цикла остановился. Потом ещё запустил, и он начал ребутить после каждой перезагрузки роутера. И даже проскочил "хороший" ip, который начинался на 5.ххх.ххх.ххх, и перегрузил роутер.

Если внешний адрес, видимый другими сайтами не начинается на 85, то такой адрес абсолютно одинаково видится и в веб-морде роутера, и внешними сайтами.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
27.01.2021, 17:20
Цитата Сообщение от KOHTAKT Посмотреть сообщение
много "мусора" кидает по всей системе.
Что значит "по всей системе"? SendKeys лишь вводит текст. Должна происходить активация cmd-окна по заголовкам с путём к cmd.exe и потом Telnet. У вас Telnet в заголовке cmd после выполнения telnet 192.168.0.1 присутствует?
Закройте предварительно все cmd-окна и окна, где есть Telnet в заголовке.
А лучше просто такой vbs-ник на какой-нибудь тулбар закиньте (можно и к хоткею привязать) и кликайте для останова всего лишнего (в т. ч. "мусора" и т. п.):
Visual Basic
1
CreateObject("WScript.Shell").Run "taskkill /f /im wscript.exe /im cscript.exe /im cmd.exe /im telnet.exe", 0
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
27.01.2021, 18:28
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Я правильно понимаю, что мы получаем значение ip для обработки от внешнего сайта?
Да.

Цитата Сообщение от KOHTAKT Посмотреть сообщение
Интересно, что я запустил скрипт ещё раз, чтобы проследить изменение ip, он опять после одного цикла остановился.
Совершенно верно. Скрипт при запуске сразу ребутит роутер (мы же подразумеваем, что изначально ip 'плохой"?), после перезагрузки опять проверяем ip и если он равен 85 (как Вы записали в последней версии), то скрипт заканчивает работу. То есть, то самое условие:
Windows Batch file
1
If a(0) = 100
это и есть поиск цели. 100 - (как ставилось в первоначальной задаче) это наша цель. И как только она достигнута, скрипт прекращает свою деятельность. Поставили 85, значит при получении ip с первым октетом 85 скрипт считает, что цель найдена.

Цитата Сообщение от KOHTAKT Посмотреть сообщение
И даже проскочил "хороший" ip, который начинался на 5.ххх.ххх.ххх, и перегрузил роутер.
Если нам нужен 5, значит в условие и надо писать 5, а не 85. Это уже третья инкарнация задачи. Сначала надо было 100, потом 85, теперь 5. Рабочий скрипт у Вас есть. Осталось определиться с целью.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
27.01.2021, 18:31
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Если нам нужен 5, значит в условие и надо писать 5, а не 85.
Вы путаете "хороший" с "плохим".
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
27.01.2021, 18:54
Цитата Сообщение от FlasherX Посмотреть сообщение
Вы путаете "хороший" с "плохим".
Прямым текстом сказано:
Цитата Сообщение от KOHTAKT Посмотреть сообщение
И даже проскочил "хороший" ip, который начинался на 5.ххх.ххх.ххх, и перегрузил роутер.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
27.01.2021, 18:57
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Прямым текстом сказано:
Именно из этого прямого текста я и взял слово "хороший". 85 — это плохой, 5 — хороший. Вы этого так и не поняли?
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
27.01.2021, 19:08
Цитата Сообщение от FlasherX Посмотреть сообщение
85 — это плохой
Да, вот же, надысь он ещё был хорошим ...

Цитата Сообщение от KOHTAKT Посмотреть сообщение
Kubuntovod, вашем скрипте If a(0) = 100 Then GetExtIP = True это проверка внешнего адреса? Только он не на 100 тогда должен проверяться (так он видит адрес в панели роутера), как я уже выше писал про это вашему коллеге, а другими сайтами он будет видеться с адресом на 85.
Что же мы ловим скриптом? 100, 85, 5 или ещё какую холеру ...
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
27.01.2021, 19:10
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Да, вот же, надысь он ещё был хорошим ...
Здрасте. Перечитайте первый пост. 100 = 85.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
27.01.2021, 20:31
Цитата Сообщение от FlasherX Посмотреть сообщение
Здрасте
Здрасьте

Цитата Сообщение от FlasherX Посмотреть сообщение
Перечитайте первый пост. 100 = 85.
По ходу, Вы правы. Я уже запутался в этих условиях.

Значит, в свете последних открытий условие надо перевернуть наоборот
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
Do
    Call RebootRouter
    WScript.Sleep 10000
Loop Until GetExtIP
 
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()
    GetExtIP = True
    Set o = CreateObject("Microsoft.XMLHTTP")
    o.open "GET", "http://ipinfo.io/ip", False
    o.send
    If o.Status = 200 Then
        a = Split(o.responseText, ".")
        If a(0) = 85 Then GetExtIP = False
    End if
End Function
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
27.01.2021, 20:38
Цитата Сообщение от Kubuntovod Посмотреть сообщение
условие надо перевернуть наоборот
Да там не только это надо "перевернуть". Ну да ладно, я свой код и так предоставил.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
28.01.2021, 04:16
Цитата Сообщение от FlasherX Посмотреть сообщение
Да там не только это надо "перевернуть".
Больше там нечего переворачивать.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
28.01.2021, 12:21  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
У вас Telnet в заголовке cmd после выполнения telnet 192.168.0.1 присутствует?
Так точно.

Цитата Сообщение от FlasherX Посмотреть сообщение
А лучше просто такой vbs-ник на какой-нибудь тулбар закиньте
Я уже запутался в условиях. Это мне нужно будет всегда при работе скрипта вручную "отсекать" всё лишнее?
И если можно, пожалуйста, формулируйте инструкции к моим действиям чуть подробнее: что значит к тулбару или как привязать?

Kubuntovod, на всякий случай для вас, ещё раз постараюсь сформулировать условия задачи для работы скрипта.
Любые ip считаются "хорошими", кроме тех, которые начинаются на 100 (из веб-морды) или на 85 (если взяты от внешнего источника).
Цель скрипта: ребутить роутер, пока он не зацепится за "хороший" ip.
Можно ещё дополнить условием, чтобы количество ребутов ограничивалось, дабы процесс поиска "хорошего" ip не затянулся слишком долго. Хотя, думаю, это условие можно уже сформулировать в планировщике (поправьте, если ошибаюсь).

Добавлено через 34 минуты
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Значит, в свете последних открытий условие надо перевернуть наоборот
"Наоборот" задачу не решил, "хороший" ip опять был отбракован.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
28.01.2021, 14:54
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Больше там нечего переворачивать.
Вы не понимаете, что в кавычках указывается переносный смысл? Доделывать, модифицировать, если угодно. Скажем, одна из ошибок новичков — создавать объекты внутри функций, что уже подразумевает лишнюю трату ресурсов при множественном вызове с последующей утечкой памяти без очищения. Про статическую задержку уже было сказано. Проблема с деактивацией окна (а на старте это может быть сделано не только вручную, но и другими приложениями) также будет очевидна.

Цитата Сообщение от KOHTAKT Посмотреть сообщение
Это мне нужно будет всегда при работе скрипта вручную "отсекать" всё лишнее?
Нет, это следует сделать на крайние случаи с зацикливанием и сумятицей в поведение, часто спасает. При запуске системы там, полагаю, ничего лишнего появиться не должно.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
что значит к тулбару или как привязать?
Ну я не знаю, какие у вас есть тулбары (панели инструментов или быстрого запуска), где вы кнопки/ярлыки создаёте. Системные на панели задач, привязанные к некой стороне экрана или Раб. стола (TLB, PowerPro, Tray Commander), трею (аля PStart), расширения оболочки проводника типа StExBar, DMEXBar и т. д. А хоткей можно создавать хоть в ФМ, хоть через свойства ярлыка.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
28.01.2021, 15:01
Цитата Сообщение от KOHTAKT Посмотреть сообщение
"Наоборот" задачу не решил, "хороший" ip опять был отбракован.
Надо смотреть, что в этот момент показывает http://ipinfo.io/ip. Добавлю комментов, чтобы Вы понимали логику скрипта.
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
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()
    GetExtIP = True    'Присваиваем значение для возврата
    Set o = CreateObject("Microsoft.XMLHTTP")
    o.open "GET", "http://ipinfo.io/ip", False
    o.send    'Отправляем запрос
    If o.Status = 200 Then    'Если запрос отработал норм
        a = Split(o.responseText, ".")    'Разбиваем ответ по разделителю "точка" в массив
        If a(0) = 85 Then GetExtIP = False    'Если первый элемент массива равен 85, присваиваем переменной возврата False
    End if
End Function
То есть, пока запрос возвращает нам в первом октете 85, будет работать этот скрипт. Для отладки добавил ожидание нажатия клавиши. Проверяйте, что возвращает http://ipinfo.io/ip. Затем, жмите Enter и бдите дальше.

Добавлено через 2 минуты
Цитата Сообщение от FlasherX Посмотреть сообщение
Скажем, одна из ошибок новичков — создавать объекты внутри функций, что уже подразумевает лишнюю трату ресурсов при множественном вызове с последующей утечкой памяти без очищения.
Это всё мелочи жизни. Когда скрипт удовлетворит ТС, то можно будет и объекты поудалять и прочие вылизывания кода организовать. А пока оно не достигает цели, ничего там не утечёт.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
28.01.2021, 15:13
KOHTAKT, забыл спросить. Что (целиком) отображается у вас в заголовке окна консоли до ввода логина, пароля и ребута?

Цитата Сообщение от Kubuntovod Посмотреть сообщение
Это всё мелочи жизни.
и прочие вылизывания кода
Суть не в мелочах и вылизывании, а в правильном подходе и отношении, которое должно впитываться у разраба как мёд с молоком, если руки из правильного места растут. Остальные немелочи, как вижу, вы нескромно опустили. Ну ОК..
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
28.01.2021, 18:44
Цитата Сообщение от FlasherX Посмотреть сообщение
создавать объекты внутри функций, что уже подразумевает лишнюю трату ресурсов при множественном вызове с последующей утечкой памяти без очищения.
Запустил. Ждал, ждал, пока память потечёт ... Но, не дождался. Может не туда смотрю? Где оно там течёт то?
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
28.01.2021, 19:54
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Может не туда смотрю?
Не знаю. Я бы смотрел через Win32_PerfFormattedData_PerfProc_Process .
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Где оно там течёт то?
Процессор, ОП, ВП. Это могут быть десятки Кб, но суть от этого не меняется. Тут важнее, что такой подход подразумевает повторные подключения к одной и той же объектной модели, что есть пустая трата лишнего процессорного времени.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
28.01.2021, 20:15
Цитата Сообщение от FlasherX Посмотреть сообщение
Не знаю. Я бы смотрел через Win32_PerfFormattedData_PerfProc_Process .
А VBScript настолько коварен, что "утекает" мимо диспетчера задач?

Цитата Сообщение от FlasherX Посмотреть сообщение
Процессор, ОП, ВП. Это могут быть десятки Кб, но суть от этого не меняется. Тут важнее, что такой подход подразумевает повторные подключения к одной и той же объектной модели, что есть пустая трата лишнего процессорного времени.
Можно, конечно, переписать, чтобы без повторных подключений. Но ради сферической экономии в вакууме ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2021, 20:15

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru