Помню был у соседа маршрутизатор D-link
2500U/BRU/D. Маршрутизатор
ADSL DSL-2500U/BRU/D позволяет быстро и просто получить широкополосный доступ в
Интернет и совместно использовать канал связи ADSL несколькими пользователями.
Благодаря встроенному интерфейсу ADSL2/ADSL2+, поддерживающему скорость
нисходящего потока до 24 Мбит/с, межсетевому экрану и QoS, это устройство
предоставляет пользователям удобный и экономичный способ создания безопасной,
высокоскоростной сети.
Неплохой маршрутизатор. Но я про задачу его удаленой
перезагрузки. По всей видимости сосед особо его конфигурированием не занимася и
раздавал интернет еше кому то, поэтому маршрутизатор зависал частенько. Ну не
ждать же его ручной перезагрузки…
Это можно сделать удаленно через telnet. Но набирать каждый раз пяток другой команд, да и ребенку это не расскажешь. Поэтому я написал VB-скрипт который в некоторой степени этот процесс перезагрузки автоматизировал. Находил я как-то автоматизацию такой же перезагрузки в интернете через TSE (Telnet Script Executor), но я не хочу доверять пароли к маршрутизатору незнакомому софту !
Это можно сделать удаленно через telnet. Но набирать каждый раз пяток другой команд, да и ребенку это не расскажешь. Поэтому я написал VB-скрипт который в некоторой степени этот процесс перезагрузки автоматизировал. Находил я как-то автоматизацию такой же перезагрузки в интернете через TSE (Telnet Script Executor), но я не хочу доверять пароли к маршрутизатору незнакомому софту !
Ниже привожу текст своего скрипта (tel2500u.vbs):
Option Explicit
Option Explicit
On Error Resume Next
Dim WshShell, theCalculator
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo("Reboot D-Link 2500u by Telnet")
Запуск сессии telnet
theCalculator = WshShell.Run("смd /c telnet.exe", 1, False)
WScript.Sleep 500
WshShell.AppActivate "%comspec%"
WScript.Sleep 500
Назначаем журнал сессии
WshShell.SendKeys "set logfile tel2500.log~"
WScript.Sleep 100
WshShell.SendKeys "open 192.168.1.1~"
WScript.Sleep 5500
Имя администратора - вам нужно ваше
WshShell.SendKeys "admin~"
WScript.Sleep 1500
Пароль администратора - вам нужен ваш
WshShell.SendKeys "admin~"
WshShell.SendKeys "admin~"
WScript.Sleep 1500
WshShell.SendKeys "sysinfo~"
WScript.Sleep 1500
В документации иногда предлагают ребут делать с помощью команды kill
'WshShell.SendKeys "kill 1~"
WshShell.SendKeys "reboot~"
Самая большая задержка. Возможно ее придется увеличить если ваш маршрутизатор не будет успевать восстановится.
WScript.Sleep 37000
Следующий блок делает проверку состояния маршрутизатора
WshShell.AppActivate "%comspec%"
WshShell.SendKeys "xx"
WScript.Sleep 500
WshShell.SendKeys "open 192.168.1.1~"
WScript.Sleep 1500
WshShell.SendKeys "admin~"
WScript.Sleep 500
WshShell.SendKeys "admin~"
WScript.Sleep 500
WshShell.SendKeys "sysinfo~"
WScript.Sleep 1500
WshShell.SendKeys "logout~"
WScript.Sleep 500
WshShell.SendKeys "xx"
Option Explicit
ReplyDeleteOn Error Resume Next
Dim WshShell, theCalculator
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo("Reboot D-Link 2500u by Telnet (~45 sec)")
theCalculator = WshShell.Run("cmd /c telnet 192.168.1.2")
WScript.Sleep 500
WshShell.SendKeys "admin"
WScript.Sleep 500
WshShell.SendKeys "admin"
WScript.Sleep 1500
WshShell.SendKeys "reboot"
ответ
BCM96332 ADSL Router
Login: 5~14-9,14-9,52//
А в чем проблема то? В телнет ручками все ок?
ReplyDeleteв телнет я спокойно захожу ввожу логин и пароль и перезапускаю.а скрипт не хочет .
ReplyDeleteполе заполняется вот так Login: 5~14-9,14-9,52//
а паузу и повторный опен после ребута тоже выполняете?
ReplyDeleteИ почему у вас все без тильды "~". У меня по другому не работало.
ReplyDeleteи с тильдами и без всё равно он поля логина и пароля заполняет цыфрами.а должен указанными
ReplyDelete- до ребута логин нормально отдает ?
ReplyDelete- пауза после ребута сколько мсек ?
- логин после ребута каждый раз заполняет разным мусором?
Cегодня столкнулся с подобным: поле заполняется вот так Login: 5~14-9,14-9,52//
ReplyDeleteРешается просто - чтобы вывело "admin" а не "14-9", нужно писать большими буквами "ADMIN". Т.е. WshShell.SendKeys "admin~" выдаст в поле Login:"14-9",
а WshShell.SendKeys "ADMIN~" выдаст "admin" ;)
это происходит только если язык по умолчанию русский. С английским нет проблем. а для русского нужно назначить сочетание для включения английской раскладки и добавить SendKeys c ним перед SendKeys "ADMIN~"
ReplyDelete