Zamykanie połączenia telnet z gracją z samego trybu sesji bez przechodzenia do monitu telnet

16

normalne połączenie telnet wygląda następująco:

telnet localhost 22
Próbuję 127.0.0.1 ...
Połączono z hostem lokalnym.
Znakiem ucieczki jest „^]”.
SSH-2.0-OpenSSH_4.2
^]
telnet> zamknij
Połączenie zamknięte.

Chcę go zamknąć z samej sesji telnet bez przechodzenia do monitu przez naciśnięcie klawisza. Moje wymaganie jest takie, że jeśli nacisnę jakiś znak kontrolny z samej sesji telnet, taki jak CTRL + A, to wyjdzie z sesji i automatycznie ją zamknie. coś takiego:

$ telnet localhost 22
Próbuję 127.0.0.1 ...
Połączono z hostem lokalnym.
Znakiem ucieczki jest „^]”.
SSH-2.0-OpenSSH_4.2
^ A
Połączenie zamknięte.
$

Próbowałem wszystkich opcji podanych na stronie man i próbowałem przeprowadzić testy pliku $ HOME / .telnetrc, ale nie mogłem tego osiągnąć, ponieważ telnetrc wykona wszystkie polecenia zapisane w nim na danym hoście, ilekroć telnet na tym hoście jest gotowy.

Czy ktoś może mi w tym pomóc, na przykład w jaki sposób można to osiągnąć.

Kumar Alok
źródło
to takie skomplikowane ..
Aby skorzystać z wyjścia, muszę najpierw przejść do monitu telnet. dobrze. podczas gdy moim wymaganiem jest zamknięcie połączenia pr wyjdź z trybu sesji bez wchodzenia do monitu telnet (tzn. aby przejść do monitu telnet, najpierw muszę wysłać znak zmiany znaczenia, a następnie mogę zamknąć lub wyjść).
Kumar Alok
@ Paul: Nie rozumiem cię. czy możesz mi powiedzieć, gdzie mogę znaleźć rozwiązanie.
Kumar Alok
3
Czy możesz wyjaśnić, dlaczego ktoś tego chce? Telnet to tylko program kliencki służący do łączenia się z dowolnymi usługami na niektórych komputerach. Jeśli korzystasz z portu 23, łączysz się z usługą Telnet i możesz zakończyć logowanie za pomocą exit, ale jest to polecenie powłoki, a nie polecenie telnet. Musisz przejść do monitu telnet, aby zakończyć połączenie, jeśli usługa, z którą się połączyłeś, nie oferuje polecenia zakończenia połączenia. Jeśli chcesz zalogować się do zdalnego komputera za pośrednictwem ssh, użyj sshpolecenia, a nie telnet(chyba że chcesz wykonać ręczne szyfrowanie).
Benjamin Bannier

Odpowiedzi:

33

Nie, telnetklient (zgaduję, że pytasz o Linuksa) obsługuje tylko jeden znak zmiany znaczenia, Ctrl]( ^]).

Jeśli po prostu używasz telnetdo nawiązywania dowolnych połączeń TCP, rozważ użycie netcatlub socatzamiast tego; można je przerwać po prostu naciskając CtrlC.

użytkownik1686
źródło
9
W przypadku obserwujących naciśnij i przytrzymaj klawisz Ctrl, a następnie naciśnij klawisz „prawy nawias”, a następnie naciśnij klawisz Enter. Odpowie na to tak, telnet>że możesz wpisać quiti nacisnąć Enter, aby zakończyć sesję. Uff!
rogerdpack,
@rogerdpack Dzięki. To sposób na wyjście z OSX.
chhantyal
Co się stanie, jeśli używam ustawień regionalnych, w których układ klawiatury ma prawy nawias pod alt- <inny klawisz>? ctrl-alt- <inny klucz> nie działa.
user628418,
Następnie zmieniasz układ klawiatury lub używasz klawiatury ekranowej ...
user1686,
-4

A co ze starym dobrym CTRL+ D, czyli EOF?

kdo
źródło
1
działałby tylko wtedy, gdyby był obsługiwany po stronie serwera. Co ogólnie nie jest prawdą (a także nieprawdą we wspomnianym 22-portowym połączeniu ssh).
Andrey Regentov