2015-05-22 3 views
2

Я пишу сценарии автоматизации Telnet с TCL и Expect в Linux Debian. Нажатие Return в сеансе Telnet или в сценарии * .tcl (send "command\r") и даже send "command\n" вызывает отправку линии с ^M (Ctrl + M) в конце. Конечно, удаленный хост рассматривает эти команды как незаконные. Пробовал до telnetset crlf перед открытием соединения и mode line при подключении, но это не влияет. Используя Puttys GUI, я включил опцию this, чтобы отправить новую строку, нажав Return вместо ^M. Работает отлично. Как настроить этот параметр для telnet?Linux Telnet vt100 Возврат ключа отправляет^M

Помощь была бы очень признательна!

Edit:

stty -a

speed 38400 baud; rows 24; columns 80; line = 0; 
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; 
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;  rprnt = ^R; 
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; 
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts 
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon  -ixoff 
-iuclc -ixany -imaxbel -iutf8 
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt 
echoctl echoke 

sttystty icrnl включен)

speed 38400 baud; line = 0; 
-brkint -imaxbel 
+0

Такая же проблема с пустым ожиданием. –

+0

Err, '\ r' * is * Ctrl-M. – EJP

+0

@EJP: Да, конечно: '\ r' является Ctrl-M и' \ n' является Ctrl-J. Но я не хочу отправлять эти Chars на удаленный хост, потому что они декодируются как обычный текст, а не как терминальные коды. –

ответ

1

Команда "Запущенная" может быть в состоянии изменить конец-строки параметров ,

Во-первых, посмотрим, что вы в настоящее время установлено:

stty -a 

Тогда попробуйте один из доступных вариантов.

stty ocrnl 

Это должно перевести возврат каретки на новую линию.

Вы можете отменить эту установку со знаком минус:

stty -ocrnl 

Если это не работает, посмотрите на ONLRET или, может быть, ONLCR.

Трудно проверить это без вашей точной окружающей среды.

+0

Спасибо за ответ. Пробовал 'stty ocrnl'' onlret' и' onlcr', к сожалению, он не влияет на команду return в сеансе 'telnet'. По словам человека, «ocrnl» кажется тем, что я хочу. Моя среда: Raspian Wheezy и Ubuntu 14.04 LTS. Выполнение 'stty' возвращает:' eol = M - ^? ', То же самое для eol2. 'stty eol CHAR' требует char, но я не хочу отправлять eol CHAR на удаленный хост вообще. –

+0

Кстати, удаленный хост - это BBS F6FBB http://f6fbb.org/index.html. –

+1

Возможно, у меня были неправильные ошибки. Попробуйте «stty icrnl». Это определенно меняет поведение терминала на моем Mac. Возможно, вы можете опубликовать вывод «stty -a». Вы можете проверить свою работу с помощью «cat> ttytest» и завершить с помощью элемента управления-D, а затем распечатать то, что у вас есть с «hexdump -C ttytest», чтобы узнать, какие реальные коды создаются. – Hankster