Я использую telnet для подключения к терминальному серверу, который передает трафик на порт RS-232.
К сожалению, при использовании некоторых устройств невозможно отправить символ CTRL+ C(0x03). Вместо передачи символа, кажется, что локальный клиент ловит нажатие клавиши, и я остаюсь в "некотором другом режиме". То, что я хотел, это просто отправить персонажа.
Чтобы отладить это, я играл с:
^] toggle termdata
и
^] toggle options
Вот что происходит, когда я нажимаю CTRL+ Cна терминальном сервере, который не работает:
telnet 10.10.129.101 2012
Trying 10.10.129.101...
Connected to termserv-val3 (10.10.129.101).
Escape character is '^]'.
^]
telnet> toggle options
Will show option processing.
^]
telnet> toggle termdata
Will print hexadecimal representation of terminal traffic.
SENT IAC IP
SENT DO TIMING MARK
Вот что происходит на терминальных серверах, которые работают:
telnet termserv-val2 2012
Trying 10.10.128.93...
Connected to termserv-val2 (10.10.128.93).
Escape character is '^]'.
telnet> toggle options
Will show option processing.
telnet> toggle termdata
Will print hexadecimal representation of terminal traffic.
< 0x0 03
^C
Я пытался, toggle localchars
но это не имело никакого значения.
Я также попытался, mode character
что позволило мне отправить символ CTRL+ C, но здесь я не получил никакого вывода с устройства.
Как я могу настроить свой клиент telnet для решения этой проблемы?
Ответы:
Вы пытались отключить localchars в своем клиенте telnet?
Вы также можете поместить эту команду в
~/.telnetrc
файл, в зависимости от вашей версии telnet.источник
Вы можете попробовать 8-битный чистый режим ... он не позволяет telnet интерпретировать большую часть данных
(Это выстрел в темноте)
По большей части вы находитесь на правильном пути, пытаясь заставить telnet прекратить предварительную интерпретацию нажатий клавиш ... таких как CTRL-C и CTRL-Z и другие. 8-битный режим должен помочь.
источник
Это может помочь, хотя вместо него используются 3 других инструмента
telnet
:echo 03 | xxd -r -p | nc host port
источник
^C
это символ перерыва. Вы можете отправить его с помощью экранирования telnet (по умолчанию^]
), а затемsend brk
.источник
BRK
Последовательность Telnet имеет специфическое значение для реализации на принимающей стороне и отличается от отправки символаETX
(^C
). В системах Unixy это обычно означает делать то,TCSBRK
ioctl
чтоtelnetd
использует TTY . На последовательных устройствах это часто приводит к удержанию линии передачи на низком уровне от четверти до половины секунды.quit
в telnet также есть команда.Я использовал «параметры переключения» и «параметры переключения», чтобы убедиться, что ситуация на моем сайте совпадает с исходной. Я смог отправить символ ^ C (control-C) специально с помощью команды telnet 'send ip', как описано в документации. В моем случае я поместил все 3 команды в ~ / .telnetrc
источник
использование
если вам нужно просто подключиться к порту сервера и прерывать его
Ctrl C
при необходимости. Вы можете установитьnc
сnetcat
пакетом.PS Идея взята из ответа @ bambam-s, но я не знаю, что означает
xxd
команда, которая использовалась, и она прекрасно работает без нее для моего варианта использования.источник