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?

Allan
źródło
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.

jlp
źródło
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.

lornix
źródło
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

bambam
źródło
1

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

Dadinck
źródło
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

robm
źródło
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.

VasyaNovikov
źródło