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 localchars
ale nie zrobiło to żadnej różnicy.
Próbowałem również, mode character
co 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?
Odpowiedzi:
Czy próbowałeś wyłączyć znaki lokalne w swoim kliencie Telnet?
Możesz również umieścić to polecenie w
~/.telnetrc
pliku, w zależności od wersji telnet.źródło
Możesz wypróbować 8-bitowy tryb czyszczenia ... powstrzymuje on telnet przed interpretowaniem dużej ilości danych
(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.
źródło
Może to pomóc, chociaż wykorzystuje 3 inne narzędzia zamiast
telnet
:echo 03 | xxd -r -p | nc host port
źródło
^C
jest postacią przerwaną. Możesz wysłać go z ucieczką telnet (domyślnie jest^]
), a następniesend brk
.źródło
BRK
Sekwencja Telnet ma specyficzne dla implementacji znaczenie na końcu odbierającym i nie jest tym samym, co wysyłanie znakuETX
(^C
). W systemach Unixy zwykle oznacza to wykonywanie tego,TCSBRK
ioctl
czegotelnetd
używa TTY . W urządzeniach szeregowych często przekłada się to na utrzymywanie linii transmisyjnej na niskim poziomie przez kwadrans do pół sekundy.quit
polecenie w telnet.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
źródło
Posługiwać się
jeśli chcesz, to po prostu połącz się z portem serwera i przerwij w
Ctrl C
razie potrzeby. Możesz zainstalowaćnc
znetcat
pakietem.PS idea pochodzi z odpowiedzi @ bambam-s, ale nie wiem, co
xxd
to było użyte polecenie, i działa bez niego w moim przypadku.źródło