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