Telnet invia Ctrl-C


14

Uso telnet per connettermi a un server terminal, che inoltra il traffico a una porta RS-232.

Sfortunatamente quando si utilizzano alcuni dei dispositivi non è possibile inviare il carattere CTRL+ C(0x03). Invece di trasmettere il personaggio, sembra che il client locale abbia catturato la sequenza di tasti, e io rimango in "modalità qualche altro". Quello che volevo era solo inviare un personaggio.

Per eseguire il debug di questo ho giocato con:

^] toggle termdata

e

^] toggle options

Ecco cosa succede quando premo CTRL+ Csu un server terminal che non funziona:

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

Ecco cosa succede sui terminal server che funzionano:

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

Ho provato toggle localcharsma non ha fatto alcuna differenza.

Ho anche provato mode characterche mi ha permesso di inviare il carattere CTRL+ C, ma qui non ho ricevuto alcun output dal dispositivo.

Come posso configurare il mio client Telnet per risolvere questo?


2
Che terminal server è questo?
Michael Hampton,

Risposte:


5

Hai provato a disattivare localchars nel tuo client telnet?

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

Potrebbe anche essere possibile inserire questo comando nel ~/.telnetrcfile, a seconda della versione di telnet.


Ci ho provato (leggi l'ultima parte della domanda)
Allan,

3

Potresti provare la modalità clean a 8 bit ... impedisce a telnet di interpretare gran parte dei dati

telnet -8 host port

(Questo è uno scatto nel buio)

Per la maggior parte, sei sulla strada giusta, cercando di ottenere telnet per interrompere la pre-interpretazione dei tasti ... come CTRL-C e CTRL-Z e altri. La modalità a 8 bit dovrebbe aiutare.


1
Ho provato questo, non ha funzionato. Ho fatto comunque trovare un'altra soluzione: il terminal server può essere configurato per funzionare come "modalità server TCP" (impostazioni predefinite, con cui ho problemi), ma se questo viene cambiato in "modalità COM reale" le cose funzionano. Non ho idea di quali siano effettivamente le differenze ...
Allan,

congratulazioni per aver trovato una soluzione. Sempre buono per risolvere un problema.
Lornix,

Anno ... Non sono troppo contento di questa soluzione, preferirei risolverla apportando modifiche alla configurazione del mio client Telnet
Allan,

1
@Allan, per favore, invia il tuo commento come risposta e contrassegnalo come la risposta corretta per risolvere il problema, grazie.
Non disponibile dal

3

Questo potrebbe aiutare, sebbene utilizzi altri 3 strumenti invece di telnet:

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


1

^Cè un personaggio di rottura. Puoi inviarlo con un escape telnet (l'impostazione predefinita è ^]) e quindi send brk.


3
La BRKsequenza di Telnet ha un significato specifico dell'implementazione sull'estremità ricevente e non è la stessa dell'invio del carattere ETX( ^C). Sui sistemi Unixy, di solito significa fare TCSBRK ioctltutto ciò che TTY telnetdsta usando. Sui dispositivi seriali, ciò si traduce spesso nel mantenere bassa la linea di trasmissione per un quarto o mezzo secondo.
Blrfl,

Non sono sicuro che cambi qualcosa, ma c'è anche il quitcomando in telnet disponibile.
VasyaNovikov,

0

Ho usato 'Attiva / Disattiva opzioni' e 'Attiva / disattiva termdata' per verificare che la situazione sul mio sito corrisponda a quella del poster originale. Sono stato in grado di inviare il carattere ^ C (control-C) specificamente con il comando telnet 'send ip' come descritto nella documentazione. Nel mio caso ho inserito tutti e 3 i comandi nel mio ~ / .telnetrc


0

Uso

nc host port

se quello che vuoi è semplicemente collegarti a una porta del server e interrompere Ctrl Cquando necessario. È possibile installare nccon il netcatpacchetto.

PS l'idea è presa dalla risposta di @ bambam-s, ma non so quale sia il significato del xxdcomando che è stato usato, e funziona bene senza di essa per il mio caso d'uso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.