Telnet wysyła Ctrl-C


14

Używam telnetu do łączenia się z serwerem terminali, który pośredniczy w ruchu do portu RS-232.

Niestety podczas korzystania z niektórych urządzeń nie można wysłać znaku CTRL+ C(0x03). Zamiast przesyłać postać, wygląda na to, że lokalny klient złapał naciśnięcie klawisza, a ja jestem w „trybie innym”. Chciałem tylko wysłać postać.

Aby to debugować, bawiłem się z:

^] toggle termdata

i

^] toggle options

Oto, co się dzieje, gdy naciskam CTRL+ Cna serwerze terminali, który nie działa:

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

Oto, co dzieje się na działających serwerach terminali:

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

Próbowałem, toggle localcharsale nie zrobiło to żadnej różnicy.

Próbowałem również, mode characterco pozwoliło mi wysłać znak CTRL+ C, ale tutaj nie otrzymałem żadnego wyjścia z urządzenia.

Jak mogę skonfigurować mojego klienta Telnet, aby rozwiązać ten problem?


2
Co to za serwer terminali?
— Michael Hampton

Odpowiedzi:


5

Czy próbowałeś wyłączyć znaki lokalne w swoim kliencie Telnet?

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

Możesz również umieścić to polecenie w ~/.telnetrcpliku, w zależności od wersji telnet.


Próbowałem tego (przeczytaj ostatnią część pytania)
— Allan

3

Możesz wypróbować 8-bitowy tryb czyszczenia ... powstrzymuje on telnet przed interpretowaniem dużej ilości danych

telnet -8 host port

(To jest strzał w ciemność)

W przeważającej części jesteś na dobrej drodze, próbując zmusić telnet, aby przestał interpretować naciśnięcia klawiszy ... takie jak CTRL-C i CTRL-Z i inne. Tryb 8bit powinien pomóc.


1
Próbowałem tego, to nie zadziałało. Jak zawsze znalazłem inne rozwiązanie: serwer terminali można skonfigurować tak, aby działał jako „tryb serwera TCP” (ustawienia domyślne, z którymi mam problemy), ale jeśli zmieni się to na „tryb prawdziwego COM”, wszystko będzie działać. Nie mam pojęcia, czym tak naprawdę są różnice ...
— Allan

gratulacje znalezienia rozwiązania. Zawsze dobrze jest rozwiązać problem.
— lornix,

Rok ... Nie jestem zbyt zadowolony z tego rozwiązania, wolę go rozwiązać, wprowadzając zmiany w konfiguracji mojego klienta Telnet
— Allan

1
@ Allan, prześlij swój komentarz jako odpowiedź przy oznaczeniu go jako poprawnej odpowiedzi na rozwiązanie problemu, dziękuję.
— Niedostępne

3

Może to pomóc, chociaż wykorzystuje 3 inne narzędzia zamiast telnet:

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


1

^Cjest postacią przerwaną. Możesz wysłać go z ucieczką telnet (domyślnie jest ^]), a następnie send brk.


3
BRKSekwencja Telnet ma specyficzne dla implementacji znaczenie na końcu odbierającym i nie jest tym samym, co wysyłanie znaku ETX( ^C). W systemach Unixy zwykle oznacza to wykonywanie tego, TCSBRK ioctlczego telnetdużywa TTY . W urządzeniach szeregowych często przekłada się to na utrzymywanie linii transmisyjnej na niskim poziomie przez kwadrans do pół sekundy.
— Blrfl

Nie jestem pewien, czy coś to zmieni, ale dostępne jest również quitpolecenie w telnet.
— VasyaNovikov

0

Użyłem „opcji przełączania” i „przełączania danych termicznych”, aby sprawdzić, czy sytuacja w mojej witrynie jest zgodna z sytuacją oryginalnego plakatu. Byłem w stanie wysłać znak ^ C (control-C) konkretnie za pomocą polecenia telnet „send ip”, jak opisano w dokumentacji. W moim przypadku umieściłem wszystkie 3 polecenia w moim ~ / .telnetrc


0

Posługiwać się

nc host port

jeśli chcesz, to po prostu połącz się z portem serwera i przerwij w Ctrl Crazie potrzeby. Możesz zainstalować ncz netcatpakietem.

PS idea pochodzi z odpowiedzi @ bambam-s, ale nie wiem, co xxdto było użyte polecenie, i działa bez niego w moim przypadku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.