Eu uso o telnet para conectar-se a um servidor de terminal, que proxies o tráfego para uma porta RS-232.
Infelizmente, ao usar alguns dos dispositivos, não é possível enviar o caractere CTRL+ C(0x03). Em vez de transmitir o personagem, parece que o cliente local percebeu o pressionamento de tecla e fiquei no "outro modo". O que eu queria era apenas enviar um personagem.
Para depurar isso, eu tenho brincado com:
^] toggle termdata
e
^] toggle options
Aqui está o que acontece quando eu pressiono CTRL+ Cem um servidor de terminal que não funciona:
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
Aqui está o que acontece nos servidores de terminal que funcionam:
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
Eu tentei, toggle localchars
mas não fez nenhuma diferença.
Eu também tentei o mode character
que me permitiu enviar o caractere CTRL+ C, mas aqui não recebi nenhuma saída do dispositivo.
Como posso configurar meu cliente de telnet para resolver isso?
Respostas:
Você já tentou desativar os caracteres locais no seu cliente de telnet?
Você também pode colocar esse comando no
~/.telnetrc
arquivo, dependendo da sua versão do telnet.fonte
Você pode tentar o modo de limpeza de 8 bits ... ele impede que o telnet interprete grande parte dos dados
(Este é um tiro no escuro)
Na maioria das vezes, você está no caminho certo, tentando fazer com que o telnet pare de pré-interpretar as teclas ... como o CTRL-C e o CTRL-Z e outros. O modo de 8 bits deve ajudar.
fonte
Isso pode ajudar, embora use outras 3 ferramentas em vez de
telnet
:echo 03 | xxd -r -p | nc host port
fonte
^C
é um caractere de interrupção. Você pode enviá-lo com um escape telnet (o padrão é^]
) e depoissend brk
.fonte
BRK
sequência do Telnet tem um significado específico da implementação no lado receptor e não é o mesmo que enviar o caractereETX
(^C
). Nos sistemas Unixy, geralmente significa fazer o queTCSBRK
ioctl
quer que o TTYtelnetd
esteja usando. Em dispositivos seriais, isso geralmente significa manter a linha de transmissão baixa por um quarto a meio segundo.quit
comando no telnet disponível.Usei 'opções de alternância' e 'alternar dados do termo' para verificar se a situação no meu site corresponde à do pôster original. Consegui enviar o caractere ^ C (control-C) especificamente com o comando telnet 'send ip', conforme descrito na documentação. No meu caso, eu coloquei todos os 3 comandos no meu ~ / .telnetrc
fonte
Usar
se o que você deseja é apenas conectar a uma porta do servidor e interromper
Ctrl C
quando necessário. Você pode instalarnc
com onetcat
pacote.PS: a idéia é retirada da resposta @ bambam-s, mas não sei qual é o significado do
xxd
comando que foi usado e funciona muito bem sem ele no meu caso de uso.fonte