А АFriday, 26 July 2013

Удаленная перезагрузка маршрутизатора D-link 2500U


        Помню был у соседа маршрутизатор D-link 2500U/BRU/D. Маршрутизатор ADSL DSL-2500U/BRU/D позволяет быстро и просто получить широкополосный доступ в Интернет и совместно использовать канал связи ADSL несколькими пользователями. Благодаря встроенному интерфейсу ADSL2/ADSL2+, поддерживающему скорость нисходящего потока до 24 Мбит/с, межсетевому экрану и QoS, это устройство предоставляет пользователям удобный и экономичный способ создания безопасной, высокоскоростной сети.


Неплохой маршрутизатор. Но я про задачу его удаленой перезагрузки. По всей видимости сосед особо его конфигурированием не занимася и раздавал интернет еше кому то, поэтому маршрутизатор зависал частенько. Ну не ждать же его ручной перезагрузки…

Это можно сделать удаленно через telnet. Но набирать каждый раз пяток другой команд, да и ребенку это не расскажешь.  Поэтому я написал VB-скрипт который в некоторой степени этот процесс перезагрузки автоматизировал.  Находил я как-то автоматизацию такой же перезагрузки в интернете через TSE (Telnet Script Executor), но я не хочу доверять пароли к маршрутизатору незнакомому софту !

Ниже привожу текст своего скрипта (tel2500u.vbs):
Option Explicit
On Error Resume Next
Dim WshShell, theCalculator
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~"
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"
WshShell.SendKeys "quit~"

Оригинал скрипта можете взять здесь.

9 comments:

Anonymous said...

Option Explicit
On 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//

Nyukers said...

А в чем проблема то? В телнет ручками все ок?

Anonymous said...

в телнет я спокойно захожу ввожу логин и пароль и перезапускаю.а скрипт не хочет .

поле заполняется вот так Login: 5~14-9,14-9,52//

Anonymous said...

а паузу и повторный опен после ребута тоже выполняете?

Nyukers said...

И почему у вас все без тильды "~". У меня по другому не работало.

Anonymous said...

и с тильдами и без всё равно он поля логина и пароля заполняет цыфрами.а должен указанными

Anonymous said...

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

anonim said...

Cегодня столкнулся с подобным: поле заполняется вот так Login: 5~14-9,14-9,52//
Решается просто - чтобы вывело "admin" а не "14-9", нужно писать большими буквами "ADMIN". Т.е. WshShell.SendKeys "admin~" выдаст в поле Login:"14-9",
а WshShell.SendKeys "ADMIN~" выдаст "admin" ;)

Anonymous said...

это происходит только если язык по умолчанию русский. С английским нет проблем. а для русского нужно назначить сочетание для включения английской раскладки и добавить SendKeys c ним перед SendKeys "ADMIN~"

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное