Телнет отправить Ctrl-C

14

Я использую 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 для решения этой проблемы?

Аллан
источник
2
Какой это терминальный сервер?
Майкл Хэмптон

Ответы:

5

Вы пытались отключить localchars в своем клиенте telnet?

bash$ telnet
telnet> toggle localchars
Won't recognize certain control characters.
telnet> open myhost

Вы также можете поместить эту команду в ~/.telnetrcфайл, в зависимости от вашей версии telnet.

JLP
источник
Я попробовал это (прочитайте последнюю часть вопроса)
Аллан
3

Вы можете попробовать 8-битный чистый режим ... он не позволяет telnet интерпретировать большую часть данных

telnet -8 host port

(Это выстрел в темноте)

По большей части вы находитесь на правильном пути, пытаясь заставить telnet прекратить предварительную интерпретацию нажатий клавиш ... таких как CTRL-C и CTRL-Z и другие. 8-битный режим должен помочь.

lornix
источник
1
Я попробовал это, это не сработало. Я как-то нашел другое решение: сервер терминалов можно настроить так, чтобы он действовал как «режим TCP-сервера» (настройки по умолчанию, с которыми у меня проблемы), но если это изменить на «реальный режим COM», все работает. Я понятия не имею, в чем на самом деле различия ...
Аллан
поздравляю с поиском решения. Всегда хорошо, чтобы решить проблему.
Lornix
Год ... Я не слишком доволен этим решением, я бы предпочел, чтобы оно было решено путем внесения изменений в конфигурацию моего клиента telnet
Аллан
1
@Allan, пожалуйста, отправьте свой комментарий как ответ на отметку как правильный ответ для исправления проблемы, спасибо.
Недоступно
3

Это может помочь, хотя вместо него используются 3 других инструмента telnet:

echo 03 | xxd -r -p | nc host port

Бам бам
источник
1

^Cэто символ перерыва. Вы можете отправить его с помощью экранирования telnet (по умолчанию ^]), а затем send brk.

dadinck
источник
3
BRKПоследовательность Telnet имеет специфическое значение для реализации на принимающей стороне и отличается от отправки символа ETX( ^C). В системах Unixy это обычно означает делать то, TCSBRK ioctlчто telnetdиспользует TTY . На последовательных устройствах это часто приводит к удержанию линии передачи на низком уровне от четверти до половины секунды.
Blrfl
Не уверен, что это что-то меняет, но quitв telnet также есть команда.
ВасяНовиков
0

Я использовал «параметры переключения» и «параметры переключения», чтобы убедиться, что ситуация на моем сайте совпадает с исходной. Я смог отправить символ ^ C (control-C) специально с помощью команды telnet 'send ip', как описано в документации. В моем случае я поместил все 3 команды в ~ / .telnetrc

robm
источник
0

использование

nc host port

если вам нужно просто подключиться к порту сервера и прерывать его Ctrl Cпри необходимости. Вы можете установить ncс netcatпакетом.

PS Идея взята из ответа @ bambam-s, но я не знаю, что означает xxdкоманда, которая использовалась, и она прекрасно работает без нее для моего варианта использования.

VasyaNovikov
источник