Tera Term зависает / зависает при подключении при удаленном запуске
Я написал макрос Tera Term для подключения к последовательному порту, регистрации входящих данных и отправки нескольких тестовых команд. Если я запускаю макрос вручную с локального ПК, все работает без проблем. Я запускаю макрос с помощью ttpmacro.exe.
Я использую PsExec.exe для запуска некоторых пакетных скриптов на удаленных системах. Когда я пытаюсь запустить свой макрос Tera Term как часть этих пакетных сценариев, он зависает / зависает при попытке подключения. Макрос просто останавливается и ничего не делает. Я точно знаю, что именно там он зависает, потому что у меня была запись макроса в файл после любой команды. Если я удаляю команду "connect" из макроса Tera Term (остальные мои команды остаются в макросе) и вместо этого подключаюсь с помощью "ttermpro.exe /C=1 /BAUD=115200 /M=C:\path-to-macro\" "он все еще зависает / зависает. Макрос не запускается, и последовательный порт не открывается (если я запустил удаленный рабочий стол после запуска удаленного сценария, я могу открыть сеанс PuTTY для этого последовательного порта).
Я извиняюсь, если это звучит странно. Я попытаюсь представить упрощенный пример: в моей удаленной системе я создал четыре файла: test_ttermpro.bat, test_ttermpro.ttl, test_ttpmacro.bat и test_ttpmacro.ttl.
Содержимое test_ttermpro.bat:
"C:\Program Files (x86)\teraterm\ttermpro.exe" /C=1 /BAUD=115200 /M=C:\Users\Public\test_ttermpro.ttl
Содержимое test_ttermpro.ttl:
SessionLog='C:\Users\Public\'
strconcat SessionLog 'macrooutput_pro.txt'
fileopen sessionlogfile SessionLog 0 0
if sessionlogfile=-1 exit
;write to file to verify macro gets executed
filewriteln sessionlogfile '1'
disconnect
closett
exit
Содержимое test_ttpmacro.bat:
"C:\Program Files (x86)\teraterm\ttpmacro.exe" C:\Users\Public\test_ttpmacro.ttl
Содержимое test_ttpmacro.ttl:
SessionLog='C:\Users\Public\'
strconcat SessionLog 'macrooutput.txt'
fileopen sessionlogfile SessionLog 0 0
if sessionlogfile=-1 exit
filewriteln sessionlogfile '1'
ConnectString='/C=1 /BAUD=115200'
filewriteln sessionlogfile ConnectString
; Connect to serial port 1 at 115200 baud
connect ConnectString
disconnect
closett
exit
Если я запускаю пакетные сценарии, когда я удаленно вошел в удаленную систему, из удаленной системы они запускаются без проблем. Они открывают COM-порт, и каждый пишет в свой собственный файл журнала сеанса.
НО, с этими четырьмя файлами в удаленной системе из моей локальной системы я попытался запустить:
psexec.exe /accepteula \\%REMOTE_SYSTEM% C:\Users\Public\test_ttermpro.bat
а также
psexec.exe /accepteula \\%REMOTE_SYSTEM% C:\Users\Public\test_ttpmacro.bat
После выполнения каждой команды (выполняемой отдельно для проверки различных сценариев) в удаленной системе я мог видеть ttermpro.exe в списке процессов в диспетчере задач Windows, но я мог открыть COM-порт. test_ttermpro.bat никогда не запускал свой журнал сеанса (макрос никогда не запускался). test_ttpmacro.bat действительно имел журнал сеанса, но просто застыл на команде подключения. Ни один не выходил, пока я не закончил процесс через диспетчер задач Windows.
Я использую Tera Term версии 4.87.
Любые идеи о том, почему команда "connect" кажется зависает / зависает при удаленном запуске Tera Term? Я пропускаю параметр командной строки? Есть ли лучший способ запустить Tera Term удаленно и использовать макрос?
1 ответ
Полезное решение с использованием ttermpro.exe:
Я изменил test_ttermpro.bat, чтобы использовать параметр "/I". Этот файл.bat теперь выглядит так:
"C:\Program Files (x86)\teraterm\ttermpro.exe" /I /C=1 /BAUD=115200 /M=C:\Users\Public\test_ttermpro.ttl
Добавление этого параметра позволяет Tera Term подключаться к последовательному порту и считывать / записывать / регистрировать данные, когда этот файл.bat вызывается удаленно с помощью Psexec.exe.