|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрипт перезагрузки роутера при разрыве коннекта |
|
VBS/WSH/JS - Скрипт перезагрузки роутера при разрыве коннекта
|
Новый участник Сообщения: 2 |
Доброго времени всем!
Есть готовый скрипт для адсл роутера, работает с утилитой "plink" запускается/отключается, всё без ошибок (без видимых) Проблема в том, что при имитации разрыва соединения (вынимаю адсл из порта модема) перезагрузка не начинается вообще, с консоли команда проходит, cd /d c:\route plink -noagent -l ЛОГИН -pw ПАРОЛЬ 192.168.1.1 reboot но не завершается, пока не введу ещё рас reboot ![]() Option Explicit Dim CheckPeriodSuccess, CheckPeriodFailure, CheckTimes, CheckTimesPeriod, oShell, LocalIP, UserName, Password, Client, Times ' ===================================================================== ' Данные аутентификации LocalIP = "192.168.1.1" UserName = "ЛОГИН" Password = "ПАРОЛЬ" ' Периодичность проверки пинга в мсек. (если подключение есть) CheckPeriodSuccess = 20000 ' Задержка перед повторной проверкой, если роутер был перезагружен CheckPeriodFailure = 120000 ' Кол-во контрольных проверок пинга (пакетов подряд) CheckTimes = 3 ' с интервалом (мсек.) CheckTimesPeriod = 1000 ' Путь к программе-клиенту (например plink.exe) Client = "C:\route\plink.exe" ' ===================================================================== Set oShell = WScript.CreateObject("WScript.Shell") Do if CheckRouter() then ' если все ОК WScript.Sleep CheckPeriodSuccess else ' если произведена перезагрузка WScript.Sleep CheckPeriodFailure end if Loop Function CheckRouter() Dim Connected, ProcessID Connected = false Times = CheckTimes Do If IsOnline("www.ya.ru") then Connected = true elseif IsOnline("8.8.8.8") Then Connected = true end if if not Connected then if Times > 0 then Times = Times - 1 WScript.Sleep CheckTimesPeriod end if end if Loop while Times and (not Connected) if Connected then CheckRouter = true 'msgbox "Подключения нет." else 'msgbox "Запускаю клиент" ProcessID = CreateProcess(Client & " " & LocalIP, 1) if 0 <> ProcessID then 'msgbox "Передаю сочетания" WScript.Sleep 2000 oShell.AppActivate ProcessID WScript.Sleep 500 oShell.SendKeys UserName & chr(13) WScript.Sleep 500 oShell.SendKeys Password & chr(13) WScript.Sleep 500 oShell.SendKeys "reboot" & chr(13) WScript.Sleep 500 oShell.SendKeys "^]" WScript.Sleep 100 oShell.SendKeys "quit" & chr(13) WScript.Sleep 100 call TerminateByPID (ProcessID) end if End If End Function Sub TerminateByPID(PID) Dim oWMISvc, oProcess, colProcesses Set oWMISvc = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") set colProcesses = oWMISvc.ExecQuery("Select * from Win32_Process WHERE ProcessId=" & PID) if colProcesses.Count > 0 then For each oProcess in colProcesses call oProcess.Terminate Next end if End Sub Function IsOnline (Address) On Error Resume Next Dim objPing, objStatus Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._ ExecQuery("select Replysize from Win32_PingStatus where address = '" & Address & "'") For Each objStatus in objPing IsOnline = not IsNull(objStatus.ReplySize) or IsOnline Next End Function Function CreateProcess(cmd, WindowStyle) 'вернет ProcessID Dim objWMIService, objStartup, objConfig, objProcess, PID Const SW_HIDDEN = 0 Const SW_NORMAL = 1 Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set objStartup = objWMIService.Get("Win32_ProcessStartup") Set objConfig = objStartup.SpawnInstance_ objConfig.ShowWindow = WindowStyle Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") call objProcess.Create (cmd, null, objConfig, PID) if not IsNull (PID) then CreateProcess = PID else CreateProcess = 0 End Function |
|
Отправлено: 03:41, 29-11-2015 |
Новый участник Сообщения: 2
|
Профиль | Сайт | Отправить PM | Цитировать можно не отвечать.
|
------- Отправлено: 00:49, 30-11-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - Нет чекбокса: Перезвонить при разрыве связи. | haos9cr | Microsoft Windows 8 и 8.1 | 4 | 16-12-2016 22:55 | |
Интернет - восстановление связи при разрыве соединения | Костян-Ростов | Microsoft Windows 7 | 14 | 27-07-2016 12:56 | |
VBS/WSH/JS - VBS скрипт автоматической перезагрузки роутера | SystemsX | Скриптовые языки администрирования Windows | 1 | 07-11-2014 08:55 | |
Интернет - PPPoE подключение при разрыве | Мачо | Microsoft Windows 8 и 8.1 | 1 | 28-05-2014 15:50 | |
Разное - [решено] Зависает компьютер при разрыве подключения по локальной сети | Cubbie | Microsoft Windows 2000/XP | 6 | 28-05-2009 17:32 |
|