|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
ШримпРолл 06.09.16 - 16:33 | Добрый день господа и дамы.
Прошу помочь в решении сей проблемы. Есть такой код: Попытка wshshell=Новый COMОбъект("WScript.shell"); wshshell.run("telnet 192.168.1.2 3312",2,0); Сообщить("Команду выполнил"); Исключение Сообщить("Не удалось по причине: "+ОписаниеОшибки()); КонецПопытки; Вылетает с ошибкой : Ошибка при вызове метода контекста (Run): Произошла исключительная ситуация (0x80070002) Если в место telnet ввожу ping и убираю порт или просто ввожу notepad, например, то все работает. В чем может быть дело? | ||
orefkov 1 - 06.09.16 - 16:35 | errorlookup выдает что 0x80070002 - "Не удается найти указанный файл". | ||
Метранпаж 2 - 06.09.16 - 16:36 | А просто из командной строки работает?
А не вин7 и выше утебя ли? | ||
orefkov 3 - 06.09.16 - 16:37 | Возможно, телнета нет. Возможно, надо указать полный путь. Возможно, не хватает прав на запуск телнета. Возможно, надо запускать как
cmd.exe /c telnet .... или runas | ||
sitex 4 - 06.09.16 - 16:37 | (0) Возможно клиентская часть telnet не установлена. | ||
NorthWind 5 - 06.09.16 - 16:38 | (0) телнетика по умолчанию в виндах нет, ставить надо | ||
ШримпРолл 6 - 06.09.16 - 16:46 | Винда -Windows Server2012Телнета не было, но подключил. Из командной строки работает. (3) - Сейчас проверю. | ||
ШримпРолл 7 - 06.09.16 - 16:54 | Весьма странно.
wshshell.run("cmd.exe /c telnet 192.168.1.2 3312",2,0); Срабатывает, но ничего не происходит. То -есть сообщение "Команду выполнил" есть, а окна открытого с телнетом нет. | ||
orefkov 8 - 06.09.16 - 17:00 | ну, cmd стартует, о чем shell и говорит. А вот запустить телнет cmd не может. Права проверь. Если ты командную строку запускаешь через win+R, она запускается под админ-правами, потому и может телнет запустить. А 1С не может. | ||
NorthWind 9 - 06.09.16 - 17:01 | (7) там была такая фишка, что wshell.run консольные приложения прятать умеет. Какой-то ключ у команды за это отвечает, могу даже посмотреть какой | ||
Метранпаж 10 - 06.09.16 - 17:03 | (8) " Если ты командную строку запускаешь через win+R, она запускается под админ-правами"
С чего бы? | ||
orefkov 11 - 06.09.16 - 17:07 | (10)
Я нажимаю Win+R и там русским языком написано: "Это задание будет выполнено с правами администратора". | ||
NorthWind 12 - 06.09.16 - 17:07 | Set Cmd = CreateObject("WScript.Shell")
Cmd.Run "telnet.exe", 1, True
у меня вот так простартовывает, открывает окно. Win10. | ||
orefkov 13 - 06.09.16 - 17:07 | |||
Метранпаж 14 - 06.09.16 - 17:08 | (11) У меня вин7 - и такой надписи нет | ||
ШримпРолл 15 - 06.09.16 - 17:08 | (9) Я действительно использую этот ключ. Но команду пинг он у меня скрывает просто свернув. А тут ничего нет. Хотя сейчас проверю, выключив вообще этот ключ.
Строку я реально через win+R открываю. | ||
NorthWind 16 - 06.09.16 - 17:09 | |||
ШримпРолл 17 - 06.09.16 - 17:13 | У меня (12) не стартует(Все та же ошибка. Пойду права смотреть. | ||
orefkov 18 - 06.09.16 - 17:14 | |||
Torquader 19 - 06.09.16 - 18:15 | TelNet где лежит ?
Возможно, что он должен лежать в директории, которая прописана в пути. Не забываем, что telnet в Windows после Xp ставится как дополнительная программа. | ||
ШримпРолл 20 - 06.09.16 - 19:01 | Telnet лежал на диске С в папке system32. И это был еще один подводный камень.
Для запуска телнета помимо установки прав, пришлось перенести все его файлы в доступную папку. т.к. system32 командная строка из 1С (без прав) не видела. Всем огромное спасибо! С вашей помощью все получилось. | ||
NorthWind 21 - 07.09.16 - 07:48 | (20) в 2012 все настолько круто с правами, что даже нельзя запускать утилиты командной строки, находящиеся по PATH? | ||
NorthWind 22 - 07.09.16 - 07:49 | вроде даже в никсах под обычным пользователем телнетом по умолчанию можно пользоваться спокойно... | ||
ШримпРолл 23 - 07.09.16 - 18:10 | (21) Видимо настолько.
А я пришел к новому тупику. Я запускал telnet и командами типа: wshshell.SendKeys("сообщенька"); засылал различные сообщеньки. Но обнаружил, что при смене раскладки клавиатуры ничего не работает. То-есть SendKeys эмулирует нажатие на кнопку и чувствительна к раскладке. Как это можно обойти? Знает кто-нибудь? | ||
ШримпРолл 24 - 07.09.16 - 18:15 | Реально вообще адекватно управлять телнетиной из 1С? | ||
ШримпРолл 25 - 07.09.16 - 18:21 | Или подскажите, как можно передать на определенный порт сервера простые строки?
Например, отправить на 192.168.1.2 3312 строку "привет" ? | ||
orefkov 26 - 07.09.16 - 18:56 | ничего, кроме как создать временный файл с расширением cmd и с содержимым
echo привет|telnet args и запуска этого файла - мне в голову не приходит. Почитай справку к телнету, может он умеет из файла текст брать? | ||
NorthWind 27 - 07.09.16 - 19:04 | (25) ВК какую-нибудь присмотреть для сокетов. Или свою написать. Как я понял, с произвольным сетевым взаимодействием (кроме почты и web) продукты 1С пока не особенно дружат. | ||
Torquader 28 - 07.09.16 - 20:08 | (25) Телнет - консольный. Его через SendKey управлять сложно.
Можно запускать через потоки и давать команды. | ||
ШримпРолл 29 - 07.09.16 - 20:15 | Большое спасибо за ваши предложенные варианты. Буду пробовать все. О результате отпишусь. | ||
ШримпРолл 30 - 07.09.16 - 20:15 | (26) Где-то читал, что умеет. Проверю на практике. Рекламное место пустует | ||
Torquader 31 - 07.09.16 - 20:36 | |||
orefkov 32 - 08.09.16 - 12:32 | Есть еще вариант кстати запускать не через .Run, а через Exec. Тогда возвращается объект, в котором есть StdIn StdOut StdErr потоки, и в StdIn поток делать Write. | ||
orefkov 33 - 08.09.16 - 12:35 | +(32)
Вот так я запускал одну консольную прогу, которой надо было потом ввести пароль и прочитать вывод: var run = '"' + myFolder + 'cntlm\cntlm.exe" -c "' + pathToCntlmIni + '" -I -M ' + remoteUrl + ' -u "' + proxyUser + '" ' + proxyAddress; var exec = wsh.Exec(run); exec.StdIn.Write(proxyPass + '\n'); var out = exec.StdOut; var text = ''; while(!out.atEndOfStream) text += out.ReadAll(); | ||
Torquader 34 - 08.09.16 - 21:15 | |||
orefkov 35 - 08.09.16 - 21:20 | |||
Torquader 36 - 08.09.16 - 21:53 | (35) Как говорится, приятного ему аппетита - и пусть его создателю будет стыдно. | ||
ШримпРолл 37 - 09.09.16 - 11:25 | Torquader и orefkov : Супер! Большое спасибо! Таким методом реально можно управлять консольными программами. Класс) Задача решилась.
Спасибо) |
|
Список тем форума
|