LANState выполнение скрипта

wise_sokol
Отправлено: 27.08.10 09:51

Вот скрипт для перезагрузки моего модема:

Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run "telnet.exe 192.168.0.1"
WScript.Sleep 1000
oShell.SendKeys "admin" & chr(13)
WScript.Sleep 1000
oShell.SendKeys "123" & chr(13)
WScript.Sleep 1000
oShell.SendKeys "reboot" & chr(13)

Если его сохранить в файл.vbs и запустить, модем перезагрузится.
Если же в настройке мониторинга в раздел выполнить скрипт поместить этот текс, то появляется сообщение о ошибке "Синтаксическая ошибка, требуется объект WScript/"
Что еще нужно дописать?
Поправьте скрипт, пожалуйста.

Комментарии

  • В общем, удалось добиться работы Вашего скрипта, но без sleep:

    function Main

    Set oShell = CreateObject("WScript.Shell")
    oShell.Run "telnet.exe 192.168.0.1"
    rem Sleep 1000
    oShell.SendKeys "admin" & chr(13)
    rem Sleep 1000
    oShell.SendKeys "123" & chr(13)
    rem Sleep 1000
    oShell.SendKeys "reboot" & chr(13)

    end function

    Это, видимо, какая-то особенность MS Script Control, через который работает функция выполнения скриптов в программе. В интернете довольно часто обсуждается данная проблема. Одним словом, сущность WScript оказывается недоступной.

    Убрали из всех строк обращение к ней и все, кроме Sleep заработало. Попробуйте без него, может получится. Как вариант, можно написать программу, так чтобы получился исполняемый файл EXE и задать ее запуск на другой вкладке.
  • Скрипт и так работает если в файл .VBS сохранить, но не с LAN STATE. То, что вы написали, вообще говорит, что не найден указанный файл. насколько я понял, не видит TELNET.EXE без WScript. Получается функция "Выполнить скрипт" в программе просто не работает или в ней свои тонкости.
    Поправьте все же скрипт под ее спицифику
  • Нормально видит telnet.exe, если его в каталог windows или system32 положить. Вы сами попробуйте из командной строки Telnet набрать. У нас на 7ке не увидел - пришлось скинуть Exe в папку windows. WScript тут ни при чем. А вот с функцией sleep не все так хорошо. Тут уже ничего не поправишь.
  • Вы telnet то в компонентах виндовс включите, вот тогда и увидит.
    думаю, проще из рабочего скрипта сделать EXE
  • В Вашем случае, думаю, это правильное решение. Пусть интерпретатор системы сам выполняет скрипт, если все работает с ним. ActiveX-класс MS Script Control, через который программа может выполнять скрипты, видимо имеет ряд ограничений по вызову объекта "WScript", а без него функция Sleep не может быть вызвана.

    Отпишите, как будет работать с exe.
    Кстати, с функцией Shell.SendKeys "admin" & chr(13) следует быть осторожным. Как я понял, она эмулирует нажатие клавиш в активном окне. Просто во время исполнения скрипта активным может оказаться окно не telnet, а какое-то другое (например то, которое Вы сами открыли в процессе работы), в котором есть сфокусированные кнопки. Отправка chr(13) на кнопку может вызвать несанкционированный запуск каких-либо процедур (удаление файла, и т.д...). Во время эксперимента с Вашим скриптом такие явления наблюдались (запускались программы с рабочего стола и т.д.).
  • exe заработал. Сначала я сделал BAT, потом сделал из него EXE. Правда, в папку со скриптом надо положить telnet.exe. а по поводу введения символов скриптом - очень интересно. Сейчас открывается окно телнета и в нем вводится это значение.
    Если же активное другое окно, то там вводится. Надо к СКРИПТОДЕЛАМ обратиться
  • Как вариант, можно еще сделать так: на закладке запуска приложения в поле "Программа" указать WScript.exe, а в параметрах задать файл скрипта .vbs. WScript.exe - это и есть системный скриптовой интерпретатор. И файлы vbs, js по умолчанию запускаются им. Только не стоит нажимать кнопку "Тест" в этой же закладке, т.к. окно телнета может потерять фокус и скрипт запустится вновь, а потом еще раз и по кругу. Все это связано с chr(13), как я уже писал.
    Успехов!
Войдите или Зарегистрируйтесь чтобы комментировать.