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

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

11.01.2021, 23:52. Показов 16578. Ответов 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
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
13.02.2021, 14:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Я правильно изменил:
Угу.

Сделаем-ка вместо задержки перед закрытием соединения ожидание самого закрытия псевдодублированием цикла, заменив 32 строку на:
Visual Basic
1
2
3
4
   Send 100, "reboot~"
   While oWMI.Get("Win32_PingStatus.Address='ya.ru'").StatusCode = 0
      WSH.Sleep 200
   Wend
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
16.02.2021, 01:25  [ТС]
FlasherX, со сделанными изменениями в коде после одной перезагрузки скрипт дальше не работает.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
18.02.2021, 10:53
KOHTAKT, вы заменили именно одну строку, как я написал? Или цикл тоже захватили вместо дублирования?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
18.02.2021, 11:10  [ТС]
FlasherX, давайте вы мне правленый код крайнюю версию выложите, чтобы я уже не путался во всех правках.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
18.02.2021, 13:20
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
54
55
56
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~"
   While oWMI.Get("Win32_PingStatus.Address='ya.ru'").StatusCode = 0
      WSH.Sleep 200
   Wend
   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
19.02.2021, 00:52  [ТС]
FlasherX, что-то никак корректно работать не хочет. Перезагружает роутер и дальше "мусор" наваливает.
Миниатюры
Скрипт для перезагрузки роутера по значению внешнего IP  
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
19.02.2021, 08:36
KOHTAKT, очевидно, что telnet не успевает проснуться после предыдущей команды. Играйтесь с мс в 29-32 строках. Поставьте везде по 500, например.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
19.02.2021, 14:11  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Играйтесь с мс в 29-32 строках.
Поигрался, но опять же, после первой перезагрузки начинает кидать значения куда попало. Если перейти на активное окно с редактором, то начинает "сыпать" данные в него. Нельзя ли как-то ограничить работу скрипта в рамках одного процесса?
И где в коде команда на ожидание перезагрузки роутера, после которой проверяется условие для дальнейшей его работы? Сделайте, пожалуйста, комментарии вашем коде.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
19.02.2021, 16:12
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Нельзя ли как-то ограничить работу скрипта в рамках одного процесса?
В каком смысле?
Ограничение по окну мы разбирали. У меня таких глюков не было и нет. И в ЛС я расписывал комменты в т. ч. и в этой части.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
И где в коде команда на ожидание перезагрузки роутера
Мы об этом только говорили — два псевдодублирующих цикла и есть это ожидание.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
21.02.2021, 00:16  [ТС]
FlasherX, что не так в этом коде, почему после перезагрузки роутера дальше не идёт?
Кликните здесь для просмотра всего текста
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
54
55
56
57
58
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 500, "telnet 192.168.0.1~"
   Send 500, Login & "~"
   Send 500, Passw & "~"
   Send 500, "reboot~": WSH.Sleep 50000
   While oWMI.Get("Win32_PingStatus.Address='ya.ru'").StatusCode = 0
      WSH.Sleep 500
   Wend
   While oWMI.Get("Win32_PingStatus.Address='ya.ru'").StatusCode
      WSH.Sleep 500
   Wend: GetIP
   Send 0, "~echo " & IP & "~"
   WSH.Sleep 10000 'задержка 
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
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
21.02.2021, 00:51
KOHTAKT, а зачем было в 31 строку добавлять : WSH.Sleep 50000, если замена как раз этого рудимента и касалась?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
21.02.2021, 11:27  [ТС]
FlasherX, я же писал, что роутер перезагружается примерно 50 сек. А по работе скрипта, сколько я не пробовал подставлять сюда бОльшие значения, было ощущение, что скрипт намного раньше начинает вставлять данные.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
While oWMI.Get("Win32_PingStatus.Address='ya.r u'").StatusCode = 0
WSH.Sleep 50000
Wend
While oWMI.Get("Win32_PingStatus.Address='ya.r u'").StatusCode
WSH.Sleep 500
Wend: GetIP
Мне думалось, что в этом коде идет проверка на значение IP.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
21.02.2021, 12:04
Цитата Сообщение от KOHTAKT Посмотреть сообщение
я же писал, что роутер перезагружается примерно 50 сек.
И что это меняет?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
сколько я не пробовал подставлять сюда бОльшие значения
А я разве писал, что надо что-то подставлять?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Мне думалось, что в этом коде идет проверка на значение IP.
Нет. Где идёт проверка, я писал в комментах к коду. 50000 тут совершенно неуместно.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
21.02.2021, 14:26  [ТС]
FlasherX, я ничего не понял.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
22.02.2021, 16:43
KOHTAKT, я тем более не понял, что в написанном может быть непонятно.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
22.02.2021, 22:43  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
что в написанном может быть непонятно
Не понятно, куда копать, если код не работает нужным образом.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
22.02.2021, 23:07
KOHTAKT, не знаю. Можно на AutoIt в соседнем разделе попробовать поуправлять окном, там встроенные функции удержания есть.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
22.02.2021, 23:22  [ТС]
FlasherX, ладно, спасибо за ваши старания, в общем-то ваш коллега уже решил мою проблему, хоть и с небольшой погрешностью.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
22.02.2021, 23:33
Цитата Сообщение от KOHTAKT Посмотреть сообщение
решил мою проблему
>
Цитата Сообщение от KOHTAKT Посмотреть сообщение
начинает кидать значения куда попало. Если перейти на активное окно с редактором, то начинает "сыпать" данные в него.
Не решил.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
23.02.2021, 22:26  [ТС]
FlasherX, вы не поняли меня, наверное, я же писал о вашем коллеге, который тоже мне помогал решить проблему, и его скрипт работает. Хотя и есть у него небольшой недочет, когда скрипт перестает работать, если соединение после перезагрузки роутера уходит в ошибку, но это редко.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2021, 22:26

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru