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

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

11.01.2021, 23:52. Показов 16189. Ответов 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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
04.02.2021, 20:21
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KOHTAKT Посмотреть сообщение
FlasherX, вы ушли из темы?
Вы мой последний коммент читали? Я ясно написал, что исправлю написанное после того, как вы разберётесь с остальной отладкой.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
05.02.2021, 06:37
Цитата Сообщение от KOHTAKT Посмотреть сообщение
И с этим что-нибудь можно сделать?
Покажите, как Вы запускаете скрипт. У меня не вылазит такое окно. Т.е. работа с телнетом у скрипта происходит "за кадром".

А может дело в другом. Не срабатывает параметр
Visual Basic
1
WshShell.Run "telnet 192.168.0.1",9
9 - это, как раз, запуск в скрытом виде. Можно поставить 2. Это будет запуск в свёрнутом виде.

Цитата Сообщение от KOHTAKT Посмотреть сообщение
Как-то можно сделать проверку такой ситуации, чтобы скрипт не остановился?
В 174-м посте, в коде скрипта, за это отвечает строка 35. Это таймаут, для ожидания ответа сервера. Видимо, иногда, одной секунды мало, чтобы прилетел ответ от сервера. Поставьте 2000, например. Если и этого будет мало, значит надо делать доп. проверку и ждать ответа "до упора". Либо вынимать ip из роутера (уж тут то задержек точно не будет).

Можно попробовать 35 строку заменить. С этого:
Visual Basic
1
WScript.Sleep 1000
на это:
Visual Basic
1
XMLHTTP.WaitForResponse
Цитата Сообщение от Kubuntovod Посмотреть сообщение
9 - это, как раз, запуск в скрытом виде. Можно поставить 2. Это будет запуск в свёрнутом виде.
Хм .. Читаю описание параметров, вариант 9, вроде, совсем про другое. Но у меня, на Win7, срабатывает.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
05.02.2021, 07:34
Цитата Сообщение от Kubuntovod Посмотреть сообщение
9 - это, как раз, запуск в скрытом виде.
С чего вдруг?
Активирует и отображает окно. Если окно свернуто или развернуто, система восстанавливает его первоначальный размер и положение. Приложение должно указать этот флаг при восстановлении свернутого окна.
Скрытие — это 0. Только отправка клавиш в скрытое окно как мёртвому припарки.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
06.02.2021, 10:07  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
у меня, на Win7, срабатывает
У меня Win7 тоже, но увы...
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
08.02.2021, 05:49
KOHTAKT, кстати, у вас одинаковый IP в cmd (cscript GetIP.vbs) выводится?:
Visual Basic
1
2
3
4
5
6
7
8
9
GetIP "MSXML2.XMLHTTP.6.0"
GetIP "WinHttp.WinHttpRequest.5.1"
 
Sub GetIP(ProgID)
   With CreateObject(ProgID)
      .Open "GET", "http://ipinfo.io/ip", 0: .Send
      WSH.Echo .ResponseText: .Abort
   End With
End Sub
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
08.02.2021, 22:42  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
IP в cmd (cscript GetIP.vbs)
Да, одинаковый.

Добавлено через 17 минут
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Можно попробовать 35 строку заменить.(пост 182)
Не работает.
Думаю, может быть для таких случаев добавить команду, если через определенное время не выполняется условие для строки 36, то так же переходить на функцию перезагрузки роутера, чем ждать ответа "до упора"? Так, мне кажется, быстрее путь к цели.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
09.02.2021, 04:23
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Думаю, может быть для таких случаев добавить команду, если через определенное время не выполняется условие для строки 36, то так же переходить на функцию перезагрузки роутера, чем ждать ответа "до упора"? Так, мне кажется, быстрее путь к цели.
Согласен. Если затуп будет серьёзный, то ожидание может затянуться. А так, будет фиксированное время.

В какой-то момент я, вообще, пришёл к мысли, что надо отставить весь это васик в сторону и написать крохотную программу. Которая будет устанавливать контакт с роутером и ребутить его. Без сендкеев. Просто со свободным временем засада. Не доходят руки.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
09.02.2021, 20:00  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Просто со свободным временем засада. Не доходят руки.
Уважаемый, я не тороплю жизнь ни свою, ни вашу, поэтому как только будут руки свободны от ваших забот, то и хорошо, что они возможно дойдут и до моих. А пока меня и так уже выручили.

Добавлено через 2 минуты
FlasherX, за вас я тоже не забыл, и ничуть не умаляю ваших познаний перед коллегой. И у меня не отпало желание так же довести ваши варианты решения до конечной цели, если вы не возражаете.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
09.02.2021, 20:52
Цитата Сообщение от 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Option Explicit
Const Login = "admin"
Const Passw = "12345"
Const Limit = 100  ' макс. число перезапусков роутера
Const IpURL = "http://ipinfo.io/ip"
'—————————————————————————————————————————
Dim oHTTP, IP, oWSH, oWMI, PID, i
Set oHTTP = CreateObject("Msxml2.XMLHTTP")
 
On Error Resume Next
With oHTTP
   .Open "GET", IpURL, 0: .Send 0: .Abort
End With
If Err.Number <> 0 Then MsgBox "Смените URL для получения IP!", 4144: Quit
On Error Goto 0
 
Set oWSH = CreateObject("WScript.Shell")
Set oWMI = GetObject("winmgmts:\root\cimv2")
With oWMI.Get("Win32_Process.Handle='" & oWSH.Exec("rundll32 kernel32,Sleep").ProcessId & "'")
   PID = .ParentProcessId: .Terminate
End With
oWSH.Run "%ComSpec%": GetIP
For Each i In oWMI.ExecQuery("SELECT Handle FROM Win32_Process WHERE ParentProcessId=" & PID)
   PID = i.Handle: i = 0
Next
While Split(IP, ".")(0) = 85
   If i = Limit Then Quit() Else i = i + 1
   Send 300, "~cls~telnet 192.168.0.1~"
   Send 300, Login & "~"
   Send 100, Passw & "~"
   Send 100, "reboot~": WSH.Sleep 4000
   While oWMI.Get("Win32_PingStatus.Address='ya.ru'").StatusCode
      WSH.Sleep 500
   Wend: GetIP
Wend
MsgBox "Текущий IP: " & IP, 4160
Quit
 
Sub GetIP
   With oHTTP
      .Open "GET", IpURL, 0: .Send 0: IP = .ResponseText: .Abort
   End With
End Sub
 
Sub Send(ms, command)
   WSH.Sleep ms: oWSH.AppActivate PID
   WSH.Sleep 40: oWSH.SendKeys command
End Sub
 
Sub Quit
   If PID Then oWMI.Get("Win32_Process.Handle=" & PID).Terminate
   Set oHTTP = Nothing: Set oWSH = Nothing: Set oWMI = Nothing: WSH.Quit
End Sub
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
10.02.2021, 10:14  [ТС]
FlasherX, сделал я прогон "обсуждаемой правки", которая показала:

1) роутер циклически ребутится, но в отличие от кода коллеги, работает так, что очень часто на значке соединения в трее появляется желтый треугольник (без доступа к интернету), хотя роутер уже давно должен был очухаться после перезагрузки;
2) и ещё заметил, что роутер дальше стал ребутиться, хотя уже попался "хороший" IP. Хотелось бы видеть в работе скрипта вывод значения IP после каждой перезагрузки.

Как говорится: to be continued...
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
10.02.2021, 12:04
KOHTAKT
1) "Часто" и "давно" как-то друг с другом не стыкуются. Не находите?
2) По коду всё чисто, только при "не 85" скрипт может завершиться. Чтобы выводить IP в цикле, можно новой строкой после 34-й Send 0, "~echo " & IP & "~" добавить.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
10.02.2021, 15:18  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
1) "Часто" и "давно" как-то друг с другом не стыкуются. Не находите?
Нет, не нахожу, потому что эти наречия относятся к разным событиям.
Цитата Сообщение от FlasherX Посмотреть сообщение
только при "не 85" скрипт может завершиться
Однако, зачем мне вас вводить в заблуждение, если есть факт ребута при IP начинающемся на 5
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
10.02.2021, 16:03
Цитата Сообщение от KOHTAKT Посмотреть сообщение
эти наречия относятся к разным событиям.
Они взаимосвязаны. Роутер должен давно очухаться при частом появлении треугольника. Так понимаются ваши слова.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Однако, зачем мне вас вводить в заблуждение
Мне трудно представить сей факт. Могу привести банальный пример работы While со счётчиком:
Visual Basic
1
2
3
4
While i <> 5
   i = i + 1   
Wend
WSH.echo i  ' по достижению соответствия вернёт 5
И я дал строку, чтобы проверить, возвращается ли IP после каждого восстановления соединения. Вроде как Empty при возврате ResponseText недопустимо, т. е. в худшем случае там либо нулевая строка, либо сбой. Тестируйте.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
10.02.2021, 16:54  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Роутер должен давно очухаться при частом появлении треугольника.
У кого-то из нас похоже русский не родной язык. Вообще-то смысл моего предложения совсем не то, что воспроизвели вы. Стало похоже на текст, пропущенный через переводчик.
Я сообщил, что замечено было частое появление треугольника во время перезагрузок роутера. И как продолжение уже сделал дополнение, что роутер должен был давно уже перезагрузиться, чтобы не быть этому причиной (отсутствию соединения). Так понятнее?

Добавлено через 26 минут
FlasherX, и опять же, после получения IP на 5, скрипт продолжил ребутить роутер.
А про ошибки соединения с желтым треугольником добавлю, что они появляются сразу же после того, как роутер оканчивает перезагружаться, но не получает IP. То есть, роутер перезагружается и сразу же получает ошибку соединения. После нескольких таких перезагрузок с ошибкой соединения, попадается успешное соединение с получением роутером IP, но остается проблема с пропуском "хорошего".
Добавленная строка ничего не выводила.

Добавлено через 20 минут
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Добавленная строка ничего не выводила.
Excuse me, строка вывода так быстро мелькает, сменяясь другой командой, что я её вначале не разглядел. Надо бы как-то притормозить выведенную строку.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
10.02.2021, 21:54
Цитата Сообщение от KOHTAKT Посмотреть сообщение
У кого-то из нас похоже русский не родной язык.
Переставим местами ключевые части предложения, где суть по правилам русского не должна меняться:
хотя роутер уже давно должен был очухаться после перезагрузки, очень часто на значке соединения в трее появляется желтый треугольник (без доступа к интернету).
Тот же смысл:
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Роутер должен давно очухаться при частом появлении треугольника.


Цитата Сообщение от KOHTAKT Посмотреть сообщение
Так понятнее?
Не особо. После появления значка скрипт на этом зацикливается или что?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
и сразу же получает ошибку соединения
Где? В виде значка? Или сервер сценариев выплёвывает?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
После нескольких таких перезагрузок с ошибкой соединения
Это в рамках одного запуска скрипта происходит?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Надо бы как-то притормозить выведенную строку.
Надо ~cls временно убрать из 28 строки.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
11.02.2021, 10:42  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Тот же смысл
После перестановки смысл остался, а вот второе выражение для меня не тот же смысл имеет, хотя я являюсь носителем языка. В-втором случае получается так, что частое появление треугольников должно заставить роутер очухаться.

Добавлено через 7 минут
Цитата Сообщение от FlasherX Посмотреть сообщение
После появления значка скрипт на этом зацикливается или что?
Скрипт продолжает заново ребутить роутер.

Цитата Сообщение от FlasherX Посмотреть сообщение
Сообщение от KOHTAKT Посмотреть сообщение
и сразу же получает ошибку соединения
И значек, и в веб-панели видно.
Цитата Сообщение от FlasherX Посмотреть сообщение
Это в рамках одного запуска скрипта происходит?
Да, всё при одном запуске.
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
11.02.2021, 19:32
Цитата Сообщение от KOHTAKT Посмотреть сообщение
В-втором случае получается так, что частое появление треугольников должно заставить роутер очухаться.
Как носителю языка напомню, что "в-втором" написано с двумя ошибками. Предлог "при" означает "во время", а не "в случае", и подчинительного смысла не несёт.

Цитата Сообщение от KOHTAKT Посмотреть сообщение
Скрипт продолжает заново ребутить роутер.
Логика цикла в предварительной проверке соединения, до установки которого перехода к перезапуску роутера происходить не будет. Видимо, значок не успевает быстро обновиться в момент фактического появления соединения. Что показали результаты вывода IP?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
11.02.2021, 21:58  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
"в-втором" написано с двумя ошибками
Это всего лишь описка при быстром письме. Изначально хотел писать фразу с использованием "во-вторых".
Цитата Сообщение от FlasherX Посмотреть сообщение
Что показали результаты вывода IP?
А вот результаты показали, что выводится всегда один и тот же внешний IP, скорее всего принятый скриптом всего один раз. Видимо поэтому и ребутится роутер без остановки, не видя "хороших" IP.

Добавлено через 18 минут
FlasherX, ещё одна интересная деталь замечена: после работы скрипта веб-панель роутера не хочет признавать правильный или логин, или пароль (выводит надпись "Непраильное имя пользователя или пароль"). Хотя с консоли telnet всё принимается без ошибок, и далее, после команды ребут, веб-панель тоже начинает "узнавать своих".
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
12.02.2021, 02:07
Цитата Сообщение от KOHTAKT Посмотреть сообщение
скорее всего принятый скриптом всего один раз
В конце цикла вызывается функция GetIP и глобальная переменная IP (см. 7 строку) обновляется, каждый раз получая новые данные с ресурса. Такое могло бы быть только в случае локальной переменной. Попробуйте перед GetIP в 34 строке вставить 'Call '.

Цитата Сообщение от KOHTAKT Посмотреть сообщение
ещё одна интересная деталь замечена
Увы, догадок о причинах такого поведения вэб-панели не имею.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
12.02.2021, 20:01  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
догадок о причинах такого поведения вэб-панели не имею
Но такое стало только после деятельности вашего скрипта, это точно.
Цитата Сообщение от FlasherX Посмотреть сообщение
Попробуйте перед GetIP в 34 строке вставить 'Call '.
Ничего не поменялось, один адрес постоянно.
Я правильно изменил: Wend: Call GetIP ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.02.2021, 20:01

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
200
Ответ Создать тему
Новые блоги и статьи
Оказывается, 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