Telnet envoyer Ctrl-C


14

J'utilise telnet pour me connecter à un serveur de terminaux, qui procède au proxy vers un port RS-232.

Malheureusement, lors de l'utilisation de certains appareils, il n'est pas possible d'envoyer le caractère CTRL+ C(0x03). Au lieu de transmettre le caractère, il semble que le client local ait saisi la frappe, et je suis resté dans "un autre mode". Ce que je voulais, c'était simplement envoyer un personnage.

Pour déboguer cela, j'ai joué avec:

^] toggle termdata

et

^] toggle options

Voici ce qui se passe lorsque j'appuie sur CTRL+ Csur un serveur terminal qui ne fonctionne pas:

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

Voici ce qui se passe sur les serveurs Terminal Server qui fonctionnent:

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

J'ai essayé toggle localcharsmais cela n'a fait aucune différence.

J'ai également essayé mode characterce qui m'a permis d'envoyer le caractère CTRL+ C, mais ici, je n'ai reçu aucune sortie de l'appareil.

Comment puis-je configurer mon client Telnet pour résoudre ce problème?


2
De quel serveur terminal s'agit-il?
Michael Hampton

Réponses:


5

Avez-vous essayé de désactiver localchars dans votre client Telnet?

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

Vous pouvez également mettre cette commande dans le ~/.telnetrcfichier, selon votre version de telnet.


J'ai essayé cela (lire la dernière partie de la question)
Allan

3

Vous pourriez essayer le mode propre 8 bits ... il empêche telnet d'interpréter une grande partie des données

telnet -8 host port

(Ceci est un tir dans le noir)

Pour la plupart, vous êtes sur la bonne voie, en essayant d'obtenir que telnet arrête la pré-interprétation des frappes ... telles que CTRL-C et CTRL-Z et autres. Le mode 8 bits devrait aider.


1
J'ai essayé ça, ça n'a pas marché. J'ai cependant trouvé une autre solution: le serveur de terminal peut être configuré pour agir en "mode serveur TCP" (paramètres par défaut, avec lesquels j'ai des problèmes), mais si cela est changé en "mode COM réel", les choses fonctionnent. Je n'ai aucune idée de ce que sont réellement les différences ...
Allan

félicitations pour avoir trouvé une solution. Toujours bon pour résoudre un problème.
lornix

Année ... Je ne suis pas trop satisfait de cette solution, je préfèrerais qu'elle soit résolue en apportant des modifications à la configuration de mon client Telnet
Allan

1
@Allan, veuillez soumettre votre commentaire comme réponse et marquez-le comme la bonne réponse pour résoudre le problème, merci.
Non disponible du

3

Cela pourrait aider, bien qu'il utilise 3 autres outils au lieu de telnet:

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


1

^Cest un caractère de rupture. Vous pouvez l'envoyer avec un échappement telnet (la valeur par défaut est ^]), puis send brk.


3
La BRKséquence de Telnet a une signification spécifique à l'implémentation du côté réception et n'est pas la même chose que l'envoi du caractère ETX( ^C). Sur les systèmes Unixy, cela signifie généralement de le faire TCSBRK ioctlsur tout ce que TTY telnetdutilise. Sur les périphériques série, cela se traduit souvent par le maintien de la ligne de transmission basse pendant un quart à une demi-seconde.
Blrfl

Je ne sais pas si cela change quoi que ce soit, mais une quitcommande telnet est également disponible.
VasyaNovikov

0

J'ai utilisé les options de bascule et les données de terme de bascule pour vérifier que la situation sur mon site correspond à celle de l'affiche originale. J'ai pu envoyer le caractère ^ C (control-C) spécifiquement avec la commande telnet 'send ip' comme décrit dans la documentation. Dans mon cas, j'ai mis les 3 commandes dans mon ~ / .telnetrc


0

Utilisation

nc host port

si ce que vous voulez est simplement de vous connecter à un port serveur et d'interrompre avec Ctrl Clorsque cela est nécessaire. Vous pouvez installer ncavec le netcatpackage.

PS l'idée est tirée de la réponse de @ bambam-s, mais je ne sais pas quel est le sens de la xxdcommande qui a été utilisée, et cela fonctionne très bien sans cela pour mon cas d'utilisation.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.