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 localchars
mais cela n'a fait aucune différence.
J'ai également essayé mode character
ce 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?
Réponses:
Avez-vous essayé de désactiver localchars dans votre client Telnet?
Vous pouvez également mettre cette commande dans le
~/.telnetrc
fichier, selon votre version de telnet.la source
Vous pourriez essayer le mode propre 8 bits ... il empêche telnet d'interpréter une grande partie des données
(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.
la source
Cela pourrait aider, bien qu'il utilise 3 autres outils au lieu de
telnet
:echo 03 | xxd -r -p | nc host port
la source
^C
est un caractère de rupture. Vous pouvez l'envoyer avec un échappement telnet (la valeur par défaut est^]
), puissend brk
.la source
BRK
sé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èreETX
(^C
). Sur les systèmes Unixy, cela signifie généralement de le faireTCSBRK
ioctl
sur tout ce que TTYtelnetd
utilise. 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.quit
commande telnet est également disponible.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
la source
Utilisation
si ce que vous voulez est simplement de vous connecter à un port serveur et d'interrompre avec
Ctrl C
lorsque cela est nécessaire. Vous pouvez installernc
avec lenetcat
package.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
xxd
commande qui a été utilisée, et cela fonctionne très bien sans cela pour mon cas d'utilisation.la source