Форум программистов, компьютерный форум, киберфорум
AutoIt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118

Автоматизация перезагрузки роутера по значению внешнего IP

25.02.2021, 23:20. Показов 9579. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую вас, форумчане! Прошу помочь автоматизировать перезагрузку роутера, когда при подключении он получает "неудобные" внешние динамические IP адреса. Это такие адреса, которые роутер видит, как начинающиеся в первом октете на 100 (100.ххх.ххх.ххх), при этом же для сайтов роутер видится с IP на 85 (85.ххх.ххх.ххх). При любых других значениях в первом октете и роутер, и сайты видят IP адрес абсолютно одинаково. Перезагрузки выполнять до тех пор, пока роутер не слезет с "неудобных" IP.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.02.2021, 23:20
Ответы с готовыми решениями:

Скрипт для перезагрузки роутера по значению внешнего IP
Доброго времени суток! Ребята, нужен скрипт перезагрузки роутера, если первый октет внешнего адреса имеет значение 100. Перезагружать пока...

Автоматизация действий с использованием внешнего приложения
Доброго времени суток. Хотелось бы узнать у сведущих завсегдатаев форума, возможно ли осуществить следующую последовательность действий: ...

Автоматизация перезагрузки точки доступа ?
Здравствуйте. Есть точка TP-LINK EAP115. Она имеет доступ по SSH. 1. Как её ребутить оттуда ? shutdown -r, reboot команды не...

42
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
27.02.2021, 18:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KOHTAKT Посмотреть сообщение
но не входит и при нажатии на "Вход".
Куки включены?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
27.02.2021, 19:56  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Куки включены?
Да.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
28.02.2021, 19:38
KOHTAKT, дошли таки руки до первой версии:
PureBasic
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
;——————————————————————————————————————————————————————————————————
; Перезапуск роутера до смены значения первого октета во внешнем IP
;                                ver. 1 (28.02.2021, авт. FlasherX)
;——————————————————————————————————————————————————————————————————
#NoTrayIcon
Opt('MustDeclareVars', 1)
Const $Octet = 85
Const $Limit = 100  ; макс. число перезапусков роутера
Const $Login = 'admin'
Const $Passw = '12345'
Const $RoIP  = '192.168.0.1'
Const $IpURL = 'http://ipinfo.io/ip'
;———————————————————————————————————
Global $c, $Socket, $hTimer, $Recv
If Ping(StringRegExp($IpURL, '://\K[^/]+', 1)[0], 100) = 0 Then
   TT('Смените URL для получения IP!', 2)
   OnExit(1)
EndIf
 
While StringSplit(BinaryToString(InetRead($IpURL,16)),".",2)[0] = $Octet
   $c += 1
   If $c > $Limit Then
      TT('Достигнут предел перезапусков роутера!', 2)
      OnExit(2)
   EndIf
   TCPStartup()
   $Socket = TCPConnect($RoIP, 23)
   If $Socket = -1 Then
      TT('С ' & $RoIP & ' связь отсутствует!', 2)
      OnExit(2)
   EndIf
   $hTimer = TimerInit()
   While 1
      Sleep(100)
      $Recv = TCPRecv($Socket, 2048)
      If @error Or ($Recv = '' And TimerDiff($hTimer) > 2000) Then
         TT('Роутер не вернул никаких данных!', 2)
         OnExit(2)
      EndIf
      If $Recv <> '' Then
         Switch $Recv
            Case StringInStr($Recv, '$') > 0
               TCPSend($Socket, 'reboot' & @CRLF)
               TT('Перезапуск роутера ...', 1)
               While Ping('ya.ru', 100)
               Wend
               While Ping('ya.ru', 500) = 0
               Wend
               TT('Внешний IP: ' & BinaryToString(InetRead(IpURL,16)), 1)
               TCPCloseSocket($Socket)
               TCPShutdown()
               ExitLoop
            Case StringInStr($Recv, 'Password:') > 0
               TCPSend($Socket, $Passw & @CRLF)
            Case StringInStr($Recv, 'login:') > 0
               TCPSend($Socket, $Login & @CRLF)
         EndSwitch
      EndIf
      $Recv = ''
   WEnd
WEnd
TT('Успех! Внешний IP: ' & BinaryToString(InetRead($IpURL,16)), 1)
Sleep(3000)
 
Func TT($m, $i)
   ToolTip($m, @DesktopWidth/2, @DesktopHeight/2, ' Смена IP роутера', $i, 7)
EndFunc
 
Func OnExit($check)
   If $check = 2 Then
      TCPCloseSocket($Socket)
      TCPShutdown()
   EndIf
   If $check Then Sleep(3000)
   Exit
EndFunc
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
28.02.2021, 21:14  [ТС]
FlasherX, кодировка здесь тоже важна при сохранении файла? Если в ANSI переводить, то комменты искажает.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
28.02.2021, 21:19
KOHTAKT, где искажает? И что значит "переводить"? Сохранять, может?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
28.02.2021, 21:20  [ТС]
FlasherX, результат работы первой версии:
появилось сообщение о смене IP и перезагрузки роутера, роутер стал перезагружаться и ...
Миниатюры
Автоматизация перезагрузки роутера по значению внешнего IP  
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
28.02.2021, 21:23
KOHTAKT, не, в 49 строке ...$IpURL... забыл.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
28.02.2021, 21:26  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
И что значит "переводить"?
С вашей дотошностью спешу исправиться, в Notepad пункт в меню "Кодировки" называется "Преобразовать в ASNI"

Добавлено через 2 минуты
Цитата Сообщение от FlasherX Посмотреть сообщение
в 49 строке ...$IpURL... забыл
И куда мне это "вклеить"?
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
28.02.2021, 21:29
KOHTAKT, моя "дотошность" подсказывает, что это ANSI, а не ASNI. С UTF-8 тоже проблем не будет.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
И куда мне это "вклеить"?
Один красный символ перед указанной подстрокой.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
28.02.2021, 21:57  [ТС]
FlasherX,хотелось бы видеть вывод текущего IP, до того как роутер перезагружается. Это не сложно добавить?

Добавлено через 18 минут
FlasherX, увидел, что выводит IP, но как-то очень быстро моргает, а потом вообще скрипт вываливается без всяких оповещений. При этом в трее висит ошибка сети. Потом подключение восстанавливается, но IP остается "плохой".
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
28.02.2021, 22:31
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Это не сложно добавить?
Нет. В заголовок воткну.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
а потом вообще скрипт вываливается без всяких оповещений.
Т. е. процесса AutoIt3_x64.exe нет в диспетчере?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
При этом в трее висит ошибка сети.
А при ручных перезапусках не висела?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Потом подключение восстанавливается, но IP остается "плохой".
Исходный или другой?
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
01.03.2021, 19:57  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Т. е. процесса AutoIt3_x64.exe нет в диспетчере?
Нет в диспетчере. И ещё, если при ошибке сети перезапустить скрипт, то он только настойчиво запрашивает сменить URL для получени IP и не ребутит роутер.
Цитата Сообщение от FlasherX Посмотреть сообщение
А при ручных перезапусках не висела?
Никогда.
Цитата Сообщение от FlasherX Посмотреть сообщение
Исходный или другой?
Другой.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
01.03.2021, 20:23
Цитата Сообщение от KOHTAKT Посмотреть сообщение
выводит IP, но как-то очень быстро моргает
3 секунды — это не очень быстро. И в конце он должен выводить Успех! Внешний IP: x.x.x.x. Там есть Успех!?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
то он только настойчиво запрашивает сменить URL
Потому что пинг с FQDN не проходит при отсутствии сети.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Никогда.
Думаю, это связано с пингом. Попробуйте в момент отсутствия сети после ручного ребута в cmd выполнить ping ya.ru -n 100 и посмотреть на наличие оповещения.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Нет в диспетчере.
Другой.
Непонятно. В 20 строке определено, что скрипт должен вертеться в цикле, пока значение первого октета = 85.

Вчера чуток поправил, но незапланированного выхода это не касается:
PureBasic
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
;——————————————————————————————————————————————————————————————————
; Перезапуск роутера до смены значения первого октета во внешнем IP
;                            ver. 1.0.1 (28.02.2021, авт. FlasherX)
;——————————————————————————————————————————————————————————————————
#NoTrayIcon
Opt('MustDeclareVars', 1)
Const $Octet = 85
Const $Limit = 100  ; макс. число перезапусков роутера
Const $Login = 'admin'
Const $Passw = '12345'
Const $RoIP  = '192.168.0.1'
Const $IpURL = 'http://ipinfo.io/ip'
;———————————————————————————————————
Global $c, $Socket, $hTimer, $Recv, $oIP
If Ping(StringRegExp($IpURL, '://\K[^/]+', 1)[0], 100) = 0 Then
   TT('Смените URL для получения IP!', 2)
   OnExit()
EndIf
Global $IP = BinaryToString(InetRead($IpURL, 16))
$oIP = ' (' & $IP & ')'
TCPStartup()
 
While StringSplit($IP, ".", 2)[0] = $Octet
   $c += 1
   If $c > $Limit Then
      TT('Достигнут предел перезапусков роутера!', 2)
      OnExit(1)
   EndIf
   $Socket = TCPConnect($RoIP, 23)
   If $Socket = -1 Then
      TT('С ' & $RoIP & ' связь отсутствует!', 2)
      OnExit(1)
   EndIf
   $hTimer = TimerInit()
   While 1
      Sleep(100)
      $Recv = TCPRecv($Socket, 2048)
      If @error Or ($Recv = '' And TimerDiff($hTimer) > 2000) Then
         TT('Роутер не вернул никаких данных!', 2)
         OnExit(1)
      EndIf
      If $Recv <> '' Then
         Switch $Recv
            Case StringInStr($Recv, '$') > 0
               TCPSend($Socket, 'reboot' & @CRLF)
               TT('Перезапуск роутера ...', 1)
               While Ping('ya.ru', 100)
               Wend
               While Ping('ya.ru', 500) = 0
               Wend
               $IP = BinaryToString(InetRead($IpURL, 16))
               TT('Внешний IP: ' & $IP, 1)
               TCPCloseSocket($Socket)
               $oIP = ' (' & $IP & ')'
               ExitLoop
            Case StringInStr($Recv, 'Password:') > 0
               TCPSend($Socket, $Passw & @CRLF)
            Case StringInStr($Recv, 'login:') > 0
               TCPSend($Socket, $Login & @CRLF)
         EndSwitch
      EndIf
   WEnd
WEnd
 
TCPShutdown()
TT('Успех! Внешний IP: ' & $IP, 1)
Sleep(5000)
 
Func TT($m, $i)
   ToolTip($m, @DesktopWidth/2, @DesktopHeight/2, ' Смена IP' & $oIP & ' роутера', $i, 7)
EndFunc
 
Func OnExit($check)
   If $check Then
      TCPCloseSocket($Socket)
      TCPShutdown()
   EndIf
   Sleep(3000)
   Exit
EndFunc
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
02.03.2021, 09:44  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
3 секунды — это не очень быстро.
Я не знаю, где должна была быть задержка на 3 секунды, но значение внешнего IP выводилось мельком, я даже сам после команды вывода IP добавил команду Sleep(3000), после чего стало можно успевать рассмотреть значение.
Цитата Сообщение от FlasherX Посмотреть сообщение
Потому что пинг с FQDN не проходит при отсутствии сети.
Было бы хорошо, если бы при любой ошибке сети сразу была команда на ребут.
Цитата Сообщение от FlasherX Посмотреть сообщение
Попробуйте в момент отсутствия сети после ручного ребута в cmd
Не очень понял: когда будет ошибка сети, нужно самому через telnet сделать ребут?
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
02.03.2021, 13:32
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Я не знаю, где должна была быть задержка на 3 секунды
В самом конце. А также в процессе ожидания появления сети. Жду ответа на мой вопрос про текст сообщения.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Было бы хорошо
Тогда код вообще перестанет работать.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
когда будет ошибка сети
Подразумевается, что она сама начнёт появляться после ребута и пинга до появления сети.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
02.03.2021, 14:56  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Там есть Успех!?
Никогда ещё не было.
Цитата Сообщение от FlasherX Посмотреть сообщение
Вчера чуток поправил
Роутер перезагружался, ошибка сети появлялась после каждой перезагрузки, значение IP в информационном окне не изменялось. Потом скрипт просто перестал работать, в диспетчере задач AutoIt есть. Информационное окно осталось висеть.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
02.03.2021, 17:17
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Никогда ещё не было.
Тогда тултип не мог просто изчезнуть, пока его не перепишет следующий или скрипт не завершится. А завершиться он мог только с оповещением либо о проблемах либо об успехе с задержкой в 3 (теперь 5) секунды. Если этого не было, то AutoIt должен далее крутить цикл.
Цитата Сообщение от KOHTAKT Посмотреть сообщение
ошибка сети появлялась после каждой перезагрузки
Роутеру даётся команда reboot, потом идёт цикл c пингом проверки доступа ya.ru. Как доступ появляется скрипт проверяет первый октет текущего IP и продолжает цикл в случае совпадения с заданным. Где результаты тестов с пингом?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
значение IP в информационном окне не изменялось.
И в заголовке и в сообщении?
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Потом скрипт просто перестал работать, в диспетчере задач AutoIt есть.
Значит, сеть не восстановилась после ребута, и пинг проверки доступа к ya.ru зациклился.
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
02.03.2021, 17:40  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Где результаты тестов с пингом?
Это хотели видеть?
Миниатюры
Автоматизация перезагрузки роутера по значению внешнего IP  
0
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 118
02.03.2021, 17:44  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
И в заголовке и в сообщении?
Заголовок чего? Я смотрю только на маленькое информационное окно.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,802
02.03.2021, 18:26
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Это хотели видеть?
Что в консоли неважно. Надо в ОУ смотреть.
Лучше после такой команды: @for /l %# in (1,1,500) do @>nul ping ya.ru -n 1
Цитата Сообщение от KOHTAKT Посмотреть сообщение
Я смотрю только на маленькое информационное окно.
В этом окне есть как заголовок, так и само сообщение:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2021, 18:26
Помогаю со студенческими работами здесь

Перезагрузки роутера
Столкнулся с проблемой при включении ноутбука и подключении его к вайфаю минут через 10 15 роутер уходит в ребут по проводу все ок пробовал...

автоматизация перезагрузки камер видеонаблюдения при отвалах
Имеется 78 камер beward, часто у некоторых возникают отвалы. Требуется лишь перезагрузка чтобы они заработали. Нужна система, которая при...

Автоматизация перезагрузки / выключения удаленного компьютера через Telnet
Помогите, нужен батник чтоб автоматически через telnet подключился к удаленному компьютеру и сам ввел ранее заданные логин и пароль и...

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru