Как известно человеческая лень двигатель прогресса. Иначе бы мы до сих пор ходили бы пешком, отправляли письма почтовой каретой и вставали каждый раз с дивана, желая переключить канал на телевизоре.
Вы спросите а причем тут модем. И так рассказываю. В силу сложившихся обстоятельств модем у меня расположен в прихожей. Ну как работает интернет от “Укртелекома” вы тоже догадываетесь. Так что уютно расположившись на диване с ноутбуком бежать в прихожую при обрыве интернета для перезагрузки модема очень не хочется.
Так как я периодически пописываю разные удобняшки на VBS то естественно в голову пришла идея пообщаться с модемом с помощью скрипта. Оказалось что наш модем прекрасно работает с программой telnet значит будем использовать ее.
Перейдя в консоль запускаем ее. Модем у нас имеет IP адрес 192.168.1.1 для входа в модем в отличии от WEB интерфейса используются другие логин и пароль, а именно root, root.
После входа в модем, набрав help видим весь список команд модема. Нас из них пока интересуют только две, а именно reboot и killall.
Создадим пустой файл с именем ну допустим RebootZTE.vbs и вставим в него нижеприведенный код.
Создав ярлык для этого файла на рабочем столе мы сможем перегрузить модем не вставая с любимого дивана. Все получилось нормально но… после перезагрузки модема окно консоли остается на экране и его приходится закрывать вручную. А это лишние действия. Посмотрим что можно сделать чтобы решить эту проблему. Оказывается в Windows есть такая замечательная вещь как WMI и с ее помощью можно много чего интересного делать. Но нас пока интересует только закрытие окна оставшегося на экране после работы нашего скрипта. Проблема решаема. WMI может закрывать окна по имени открытого процесса. Что нам и требовалось. Дополняем наш код.
Все теперь наш скрипт перегружает модем и по окончании своей работы закрывает окно.
Ну и напоследок. Если вы хотите просто разорвать сессию не перегружая модем. Например в это время ваш ноутбук качает со стационарного компьютера очень большой файл, то строку
Замените на строку
UPD 25.06.15
Если у Вас подключение DHCP то вышеприведенная строка не работает и вы можете только перегружать модем.
Если при работе скрипта вы видите такую картинку.
То это говорит о том что у Вас по умолчанию включена русская раскладка клавиатуры.
Вы спросите а причем тут модем. И так рассказываю. В силу сложившихся обстоятельств модем у меня расположен в прихожей. Ну как работает интернет от “Укртелекома” вы тоже догадываетесь. Так что уютно расположившись на диване с ноутбуком бежать в прихожую при обрыве интернета для перезагрузки модема очень не хочется.
Так как я периодически пописываю разные удобняшки на VBS то естественно в голову пришла идея пообщаться с модемом с помощью скрипта. Оказалось что наш модем прекрасно работает с программой telnet значит будем использовать ее.
Перейдя в консоль запускаем ее. Модем у нас имеет IP адрес 192.168.1.1 для входа в модем в отличии от WEB интерфейса используются другие логин и пароль, а именно root, root.
После входа в модем, набрав help видим весь список команд модема. Нас из них пока интересуют только две, а именно reboot и killall.
Создадим пустой файл с именем ну допустим RebootZTE.vbs и вставим в него нижеприведенный код.
Set wshShell = WScript.CreateObject("WScript.Shell") wshShell.Run "telnet.exe 192.168.1.1" WScript.Sleep 500 wshShell.SendKeys "root~" WScript.Sleep 500 wshShell.SendKeys "root~" WScript.Sleep 500 wshShell.SendKeys "reboot~" |
Создав ярлык для этого файла на рабочем столе мы сможем перегрузить модем не вставая с любимого дивана. Все получилось нормально но… после перезагрузки модема окно консоли остается на экране и его приходится закрывать вручную. А это лишние действия. Посмотрим что можно сделать чтобы решить эту проблему. Оказывается в Windows есть такая замечательная вещь как WMI и с ее помощью можно много чего интересного делать. Но нас пока интересует только закрытие окна оставшегося на экране после работы нашего скрипта. Проблема решаема. WMI может закрывать окна по имени открытого процесса. Что нам и требовалось. Дополняем наш код.
Set wshShell = WScript.CreateObject("WScript.Shell") Set oWMI = GetObject("winmgmts:\\.\root\cimv2") wshShell.Run "telnet.exe 192.168.1.1" WScript.Sleep 500 wshShell.SendKeys "root~" WScript.Sleep 500 wshShell.SendKeys "root~" WScript.Sleep 500 wshShell.SendKeys "reboot~" WScript.Sleep 5000 Set ProcList = oWMI.ExecQuery("Select * from Win32_Process Where Name = 'telnet.exe'") For Each oProc in ProcList oProc.Terminate() Next |
Все теперь наш скрипт перегружает модем и по окончании своей работы закрывает окно.
Ну и напоследок. Если вы хотите просто разорвать сессию не перегружая модем. Например в это время ваш ноутбук качает со стационарного компьютера очень большой файл, то строку
wshShell.SendKeys "reboot~" |
Замените на строку
wshShell.SendKeys "killall pppd~" |
UPD 25.06.15
Если у Вас подключение DHCP то вышеприведенная строка не работает и вы можете только перегружать модем.
Если при работе скрипта вы видите такую картинку.
То это говорит о том что у Вас по умолчанию включена русская раскладка клавиатуры.
Спасибо, то , что искал, но почему-то на Win7 не работает. Получаю такую ошибку: Строка 3 Символ 1. Не удается найти указанный файл. Код: 80070002 Источник (null)
ОтветитьУдалитьВ третьей строке идет запуск телнет клиента
ОтветитьУдалитьВ Win 7 он не включен по умолчанию.
Включите его.
Панель управления -> Программы и компоненты -> Включение или отключение компонентов Windows
отметить птичкой Клиент Телнет
Здравствуйте ! А как должен выглядеть скрипт для разрыва сесии, если модем работает по протоколу DHCP ?
ОтветитьУдалитьПо идее wshShell.SendKeys "killall dhcpc~"
ОтветитьУдалитьНо у меня не работает поэтому и не публикую.
Тоже не срабатывает (
ОтветитьУдалитьPPoE Win7 telnet включил,логин пароль ввел...хелп,получаю табл. с командами,что с ней делать дальше?Отдельно создаем файл (текст 1 скопировал)...Нарабочий стол его.Пытаюсь открыть доходит до ввода логина и все.Подскажите что не так делаю?
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьЕсть возможность увеличения времени разрыва сессии?
ОтветитьУдалитьНет
ОтветитьУдалитькак войти через консоль в роутер?
ОтветитьУдалитьнажимаю win+r ввожу telnet.exe 192.168.1.1 пишет не удается найти телнет
ОтветитьУдалитьтелнет включен
ОтветитьУдалитьВ компонентах Windows два телнета, сервер и клиент. Включать надо клиента.
ОтветитьУдалитьУже руками смог ребутнуть. Но с вашим кодом вылазит вот такая штука в консоли. http://joxi.ru/82QqbgVfMOXj2d
ОтветитьУдалитьИ можно ли как то через батник или другим способом просто менять внейшний ип не перезагружая модем.
ОтветитьУдалитьВот на сайте другом нашел. но он у меня не срабатывает я не знаю почему.
192.168.1.1 23
WAIT "Login:"
SEND "LOGINm"
WAIT "Password:"
SEND "PASSm"
WAIT ">"
SEND "system restartm"
SEND "user logoutm"
Такая штука в консоли вылазит при русской раскладке клавиатуры по умолчанию в виндовс.
ОтветитьУдалитьЭто кусок кода не будет работать.
Если подключение DHCP то строка wshShell.SendKeys "killall pppd~" бесполезна.
Спасибо большое. Но всё таки вы бы могли сделать такой файл чтобы менять ип не перезагружая модем?Признаюсь мне нужно менять ип чтобы программа safesurf заново показывала сайты.
ОтветитьУдалитьЯ уже писал в коментариях выше что при подключении DHCP нет возможности сменить айпи не перегружая можем, да и перезагрузка не всегда помогает.
УдалитьЖаль, спасибо большое за помощь!
ОтветитьУдалитьОчень познавательно! Спасибо, VicNes
ОтветитьУдалить