Utilizo telnet para conectarme a un servidor de terminal, que representa el tráfico a un puerto RS-232.
Desafortunadamente, cuando se usan algunos de los dispositivos, no es posible enviar el carácter CTRL+ C(0x03). En lugar de transmitir el carácter, parece que el cliente local ha presionado el teclado y me he quedado en "algún otro modo". Lo que quería era enviar un personaje.
Para depurar esto, he estado jugando con:
^] toggle termdata
y
^] toggle options
Esto es lo que sucede cuando presiono CTRL+ Cen un servidor de terminal que no 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
Esto es lo que sucede en los servidores de terminal que funcionan:
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
Lo intenté toggle localchars
pero no hizo ninguna diferencia.
También intenté mode character
lo que me permitió enviar el carácter CTRL+ C, pero aquí no obtuve ninguna salida del dispositivo.
¿Cómo puedo configurar mi cliente telnet para resolver esto?
Respuestas:
¿Has intentado desactivar los caracteres locales en tu cliente telnet?
También puede poner este comando en el
~/.telnetrc
archivo, dependiendo de su versión de telnet.fuente
Puede probar el modo de limpieza de 8 bits ... evita que telnet interprete gran parte de los datos
(Esto es un tiro en la oscuridad)
En su mayor parte, estás en el camino correcto, tratando de hacer que telnet detenga la interpretación previa de las pulsaciones de teclas ... como CTRL-C y CTRL-Z y otras. El modo de 8 bits debería ayudar.
fuente
Esto podría ayudar, aunque utiliza otras 3 herramientas en lugar de
telnet
:echo 03 | xxd -r -p | nc host port
fuente
^C
Es un personaje de descanso. Puede enviarlo con un escape de telnet (el valor predeterminado es^]
) y luegosend brk
.fuente
BRK
secuencia de Telnet tiene un significado específico de implementación en el extremo receptor y no es lo mismo que enviar el carácterETX
(^C
). En los sistemas Unixy, generalmente significa hacer lo queTCSBRK
ioctl
sea quetelnetd
esté utilizando TTY . En los dispositivos en serie, eso a menudo se traduce en mantener baja la línea de transmisión durante un cuarto o medio segundo.quit
comandos disponibles en telnet.Utilicé 'alternar opciones' y 'alternar datos de término' para verificar que la situación en mi sitio coincida con la del póster original. Pude enviar el carácter ^ C (control-C) específicamente con el comando telnet 'enviar ip' como se describe en la documentación. En mi caso puse los 3 comandos en mi ~ / .telnetrc
fuente
Utilizar
si lo que desea es simplemente conectarse a un puerto del servidor e interrumpir
Ctrl C
cuando sea necesario. Puede instalarnc
con elnetcat
paquete.PD: la idea está tomada de la respuesta de @ bambam-s, pero no sé cuál es el significado del
xxd
comando que se usó, y funciona bien sin él para mi caso de uso.fuente