Telnet envía Ctrl-C

14

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 localcharspero no hizo ninguna diferencia.

También intenté mode characterlo 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?

Alano
fuente
2
¿Qué servidor de terminal es este?
Michael Hampton

Respuestas:

5

¿Has intentado desactivar los caracteres locales en tu cliente telnet?

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

También puede poner este comando en el ~/.telnetrcarchivo, dependiendo de su versión de telnet.

jlp
fuente
He intentado eso (lea la última parte de la pregunta)
Allan
3

Puede probar el modo de limpieza de 8 bits ... evita que telnet interprete gran parte de los datos

telnet -8 host port

(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.

lornix
fuente
1
He intentado esto, no funcionó. Sin embargo, encontré otra solución: el servidor de terminal se puede configurar para que actúe como "modo de servidor TCP" (configuración predeterminada, con la que tengo problemas), pero si se cambia a "modo COM real", las cosas funcionan. No tengo idea de cuáles son realmente las diferencias ...
Allan
Felicidades por encontrar una solución. Siempre es bueno solucionar un problema.
lornix
Año ... no estoy muy contento con esta solución, prefiero resolverla haciendo cambios en la configuración de mi cliente telnet
Allan
1
@Allan, envíe su comentario como respuesta y márquelo como la respuesta correcta para solucionar el problema, gracias.
No disponible el
3

Esto podría ayudar, aunque utiliza otras 3 herramientas en lugar de telnet:

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

Bam Bam
fuente
1

^CEs un personaje de descanso. Puede enviarlo con un escape de telnet (el valor predeterminado es ^]) y luego send brk.

Dadinck
fuente
3
La BRKsecuencia de Telnet tiene un significado específico de implementación en el extremo receptor y no es lo mismo que enviar el carácter ETX( ^C). En los sistemas Unixy, generalmente significa hacer lo que TCSBRK ioctlsea ​​que telnetdesté 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.
Blrfl
No estoy seguro de si cambia algo, pero también hay quitcomandos disponibles en telnet.
VasyaNovikov
0

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

robar
fuente
0

Utilizar

nc host port

si lo que desea es simplemente conectarse a un puerto del servidor e interrumpir Ctrl Ccuando sea necesario. Puede instalar nccon el netcatpaquete.

PD: la idea está tomada de la respuesta de @ bambam-s, pero no sé cuál es el significado del xxdcomando que se usó, y funciona bien sin él para mi caso de uso.

VasyaNovikov
fuente