Изящное закрытие соединения telnet из самого сеансового режима без обращения к приглашению telnet

16

нормальное соединение telnet выглядит так:

телнет localhost 22
Попытка 127.0.0.1 ...
Подключен к localhost.
Escape-символ '^]'.
SSH-2,0-OpenSSH_4.2
^]
telnet> закрыть
Соединение закрыто.

Я хочу закрыть его из самой сессии telnet, не нажимая на приглашение telnet. Мое требование заключается в том, что если я нажму какой-нибудь управляющий символ из самой сессии telnet, например CTRL + A, он выйдет из сессии и автоматически закроется. что-то вроде этого:

$ telnet localhost 22
Попытка 127.0.0.1 ...
Подключен к localhost.
Escape-символ '^]'.
SSH-2,0-OpenSSH_4.2
^ а
Соединение закрыто.
$

Я перепробовал все параметры, указанные на странице руководства, и попытался выполнить некоторые тесты файлов $ HOME / .telnetrc, но не смог этого сделать, так как telnetrc выполнит все команды, записанные в нем, с данным хостом, когда telnet к этому хосту сделано.

Может ли кто-нибудь помочь мне в этом, например, как это может быть достигнуто.

Кумар Алок
источник
это так сложно ...
Для использования выхода также мне нужно прийти в командной строке Telnet в первую очередь. право. в то время как мое требование заключается в том, чтобы закрыть соединение или выйти из режима сеанса, не заходя в приглашение telnet (т. е. для входа в приглашение telnet мне нужно сначала отправить управляющий символ, а затем я могу закрыть или выйти).
Кумар Алок
@ Пол: я не понимаю тебя. Подскажите, пожалуйста, где я могу найти решение?
Кумар Алок
3
Можете ли вы объяснить, почему так хочется? Telnet - это просто клиентская программа для подключения к какой-либо произвольной службе на некотором компьютере. Если вы используете порт 23, вы подключаетесь к службе telnet и можете прервать вход в систему exit, но это команда shell, а не команда telnet. Вы должны перейти к приглашению telnet, чтобы разорвать соединение, если служба, к которой вы подключились, не предлагает команду разорвать соединение. Если вы хотите войти на удаленный компьютер через ssh, используйте sshкоманду, а не telnet(если вы не хотите выполнять шифрование вручную).
Бенджамин Банье

Ответы:

33

Нет, telnetклиент (полагаю, вы спрашиваете о Linux) поддерживает только один escape-символ Ctrl]( ^]).

Если вы просто используете telnetдля создания произвольных TCP-соединений, рассмотрите возможность использования netcatили socatвместо; они могут быть прерваны простым нажатием CtrlC.

user1686
источник
9
Для последователей вы удерживаете Ctrl, затем нажимаете клавишу «правая скобка», а затем нажимаете Enter. Он ответит подсказкой вроде, telnet>и вы можете ввести quitи нажать Enter, чтобы выйти из сеанса. Уф!
rogerdpack
@rogerdpack Спасибо. Это способ выхода на OSX.
chhantyal
Что если я использую локаль, в которой раскладка клавиатуры имеет правую скобку под alt- <какая-то другая клавиша>? Ctrl-Alt- <другой ключ> не работает.
user628418
Затем вы переключаете раскладку клавиатуры или используете экранную клавиатуру ...
user1686
-4

Как насчет старого доброго CTRL+ D, он же EOF?

KDO
источник
1
это будет работать, только если он обрабатывается на стороне сервера сеанса. Что не соответствует действительности (а также не соответствует действительности в упомянутом 22-портовом ssh-соединении).
Андрей Регентов