Telnet senden Strg-C


14

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 localcharsaber es hat keinen Unterschied gemacht.

Ich habe auch versucht, mode characterwas 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?


2
Welcher Terminalserver ist das?
Michael Hampton

Antworten:


5

Haben Sie versucht, localchars in Ihrem Telnet-Client auszuschalten?

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

~/.telnetrcAbhängig von Ihrer Telnet-Version können Sie diesen Befehl möglicherweise auch in die Datei einfügen.


Ich habe das versucht (lies den letzten Teil der Frage)
Allan

3

Versuchen Sie es mit dem 8-Bit-Bereinigungsmodus. Er verhindert, dass Telnet einen Großteil der Daten interpretiert

telnet -8 host port

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


1
Ich habe es versucht, es hat nicht funktioniert. Ich habe jedoch eine andere Lösung gefunden: Der Terminalserver kann so konfiguriert werden, dass er als "TCP-Servermodus" fungiert (Standardeinstellungen, mit denen ich Probleme habe), aber wenn dies in "Real COM-Modus" geändert wird, funktionieren die Dinge. Ich habe keine Ahnung, was die tatsächlichen Unterschiede sind ...
Allan

Herzlichen Glückwunsch zur Lösung. Immer gut, um ein Problem zu beheben.
Lornix

Jahr ... Ich bin mit dieser Lösung nicht sehr zufrieden. Ich würde sie lieber lösen, indem ich Änderungen an meiner Telnet-Client-Konfiguration vornehme
Allan

1
@Allan Bitte senden Sie Ihren Kommentar als Antwort an und markieren Sie ihn als die richtige Antwort, um das Problem zu beheben. Danke.
Nicht verfügbar

3

Dies könnte helfen, obwohl es 3 andere Tools anstelle von verwendet telnet:

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


1

^Cist ein Break Charakter. Sie können es mit einem Telnet-Escape senden (Standard ist ^]) und dann send brk.


3
Die BRKSequenz von Telnet hat auf der Empfängerseite eine implementierungsspezifische Bedeutung und ist nicht mit dem Senden des Zeichens ETX( ^C) identisch . Auf Unixy-Systemen bedeutet dies normalerweise, dass Sie das tun, TCSBRK ioctlwas auch immer TTY telnetdverwendet. Bei seriellen Geräten bedeutet dies häufig, dass die Übertragungsleitung für eine Viertel- bis eine halbe Sekunde niedrig gehalten wird.
Blrfl

Ich bin mir nicht sicher, ob es etwas ändert, aber es gibt auch einen quitBefehl in Telnet.
VasyaNovikov

0

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


0

Verwenden

nc host port

Wenn Sie möchten, verbinden Sie sich einfach mit einem Server-Port und unterbrechen Sie ihn Ctrl Cbei Bedarf. Sie können installierennc mit dem netcatPaket .

PS: Die Idee stammt aus der Antwort von @ bambam-s, aber ich weiß nicht, was der verwendete xxdBefehl bedeutet , und es funktioniert auch ohne diesen Befehl für meinen Anwendungsfall.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.