Ich verwende Telnet, um eine Verbindung zu einem Terminalserver herzustellen, der den Datenverkehr an einen RS-232-Port weiterleitet.
Leider ist es bei einigen Geräten nicht möglich, das Zeichen CTRL+ C(0x03) zu senden . Anstatt das Zeichen zu übertragen, scheint der lokale Client den Tastenanschlag abgefangen zu haben, und ich bin im "Some-Other-Mode". Ich wollte nur einen Charakter schicken.
Um dies zu debuggen, habe ich herumgespielt:
^] toggle termdata
und
^] toggle options
Folgendes passiert, wenn ich CTRL+ Cauf einem Terminalserver drücke, der nicht funktioniert:
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
Folgendes passiert auf Terminalservern, die funktionieren:
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
Ich habe es versucht, toggle localchars
aber es hat keinen Unterschied gemacht.
Ich habe auch versucht, mode character
was mir erlaubte, das Zeichen CTRL+ zu senden C, aber hier habe ich keine Ausgabe vom Gerät zurückbekommen.
Wie kann ich meinen Telnet-Client konfigurieren, um dies zu lösen?
Antworten:
Haben Sie versucht, localchars in Ihrem Telnet-Client auszuschalten?
~/.telnetrc
Abhängig von Ihrer Telnet-Version können Sie diesen Befehl möglicherweise auch in die Datei einfügen.quelle
Versuchen Sie es mit dem 8-Bit-Bereinigungsmodus. Er verhindert, dass Telnet einen Großteil der Daten interpretiert
(Dies ist ein Schuss im Dunkeln)
Zum größten Teil sind Sie auf dem richtigen Weg und versuchen, Telnet dazu zu bringen, die Vorinterpretation von Tastenanschlägen zu stoppen ... wie STRG-C und STRG-Z und andere. 8bit Modus sollte helfen.
quelle
Dies könnte helfen, obwohl es 3 andere Tools anstelle von verwendet
telnet
:echo 03 | xxd -r -p | nc host port
quelle
^C
ist ein Break Charakter. Sie können es mit einem Telnet-Escape senden (Standard ist^]
) und dannsend brk
.quelle
BRK
Sequenz von Telnet hat auf der Empfängerseite eine implementierungsspezifische Bedeutung und ist nicht mit dem Senden des ZeichensETX
(^C
) identisch . Auf Unixy-Systemen bedeutet dies normalerweise, dass Sie das tun,TCSBRK
ioctl
was auch immer TTYtelnetd
verwendet. Bei seriellen Geräten bedeutet dies häufig, dass die Übertragungsleitung für eine Viertel- bis eine halbe Sekunde niedrig gehalten wird.quit
Befehl in Telnet.Ich habe "Optionen umschalten" und "Termdaten umschalten" verwendet, um zu überprüfen, ob die Situation auf meiner Website mit der des ursprünglichen Posters übereinstimmt. Ich konnte das ^ C (Control-C) -Zeichen speziell mit dem Telnet-Befehl 'send ip' senden, wie in der Dokumentation beschrieben. In meinem Fall habe ich alle 3 Befehle in mein ~ / .telnetrc geschrieben
quelle
Verwenden
Wenn Sie möchten, verbinden Sie sich einfach mit einem Server-Port und unterbrechen Sie ihn
Ctrl C
bei Bedarf. Sie können installierennc
mit demnetcat
Paket .PS: Die Idee stammt aus der Antwort von @ bambam-s, aber ich weiß nicht, was der verwendete
xxd
Befehl bedeutet , und es funktioniert auch ohne diesen Befehl für meinen Anwendungsfall.quelle