Не могу закрыть сеанс scpi(telnet) с помощью echo ^], когда я использую его в скрипте

Использование echo-e "\ 029" тоже не работает. Но если использовать strg + alt gr + ] непосредственно в сеансе терминала -> это работает.

Я должен задать свой вопрос более конкретно:
Я подключаю ВЧ-генератор (AGILENT) через Telnet/SCPI.
Если я делаю это руководство на терминале и нажимаю в конце сеанса CTRL + ALT GR +] для '^]', затем правильно закройте сеанс scpi, и я могу ввести quit, чтобы правильно закрыть сеанс telnet.
Нет ошибки сообщение на дисплее ВЧ-генератора. Так и должно быть.

Если я сделаю это с помощью сценария, сеанс SCPI, похоже, не распознает условие сигнала прерывания '^]' и будет вынужден закрыться после окончания сценария (telnet и scpi). -> Сообщение: «Отключено внешним хостом». К сожалению, я получаю сообщения об ошибках на дисплее ВЧ-генератора -> «неверный заголовок» и т. д.

После успешного подключения появляется сообщение: Connected to 192,168.10.66 Escape Character is ‘^]’ -> Вот в чем проблема. Ручной ввод в терминал работает корректно, скрипт не работает.

Мой скрипт выглядит примерно так:

function  getIDNMessage()  
{
    (      
        echo open $1 $2  
        sleep 1  
        echo "*IDN?"  
        sleep 1  
        echo –e "\029"         # or echo “^]” does not work well  
        sleep 1  
        echo "quit\r"  
        sleep 1  
    ) | telnet > scpi_telnet.log 2>&1
}

getIDNMessage 192.168.10.66 7777    

person Bernie    schedule 27.07.2012    source источник
comment
Похоже, что в scpi есть команда закрытия (prefix_close), но я не удивлюсь, если простое закрытие соединения будет иметь тот же эффект (достаточно просто отвалиться от конца скрипта). При запуске telnet, вероятно, проверяет, является ли stdin tty (необходим, например, для эха IAC DO/DONT). Обычные telnets отключают создание активного сеанса IAC при использовании на нестандартном порту.   -  person wildplasser    schedule 28.07.2012
comment
проверьте здесь пробовали ли вы \035 ?   -  person Aquarius Power    schedule 22.06.2014
comment
CTRL + ALT GR +] у меня сработало   -  person ffghfgh    schedule 08.08.2017


Ответы (8)


В Linux это на самом деле:

CTRL + ], затем ENTER

Наконец, введите команду quit.

^]

telnet> quit
Connection closed.
[fred@localhost ~]$
person Kajackdfw    schedule 20.11.2014
comment
А затем введите выйти. Это даже сложнее, чем выйти из vi. - person manish_s; 07.08.2016
comment
Вместо ввода quit вы также можете нажать CTRL + D (что означает конец потока), чтобы выйти из telnet. - person qwertz; 04.01.2017
comment
Вместо quit можно ввести q. - person Elrond_EGLDer; 17.02.2017
comment
На Макбуке это сложно. Рекомендации? - person Starlord; 23.02.2018

Чтобы выйти из telnet на redhat:
введите "CTRL+5", а затем "quit".

person Kindi BALDE    schedule 19.05.2017
comment
Работал и в Arch Linux. - person gustavwiz; 12.02.2018
comment
Слава богу... на моей датской клавиатуре, если я нажму CTRL-alt-gr 9 (altgr 9 есть] на клавиатуре dk), мой Mac просто изменит окна... - person Alex R; 07.01.2019
comment
Я использую SLES 11, и это единственное предлагаемое решение, которое мне подходит. - person Playing With BI; 12.03.2019

Чтобы закрыть сеанс, используйте команду ниже

  1. Ctrl +]
  2. телнет> выйти

он отлично работает в REHL и CentOS.

person Pratiyush Kumar Singh    schedule 07.11.2017

^] означает скобку ctrl + right. Как ни странно, это работает. Вы попадете в приглашение telnet, где вы можете ввести quit.

На международных клавиатурах символ ] часто не является отдельной клавишей, и его необходимо заменить какой-либо другой клавишей. Правильной клавишей обычно является клавиша справа от P или следующая за ней клавиша.

Вот список, основанный на комментариях ниже:

Finnish, Swedish, Norwegian, Danish: ctrl + å
French: ctrl + 6
German: ctrl + ü
Swiss: ctrl + ¨
Hungarian: ctrl + 5
Portuguese: ctrl + ´
Dutch, Belgian: ctrl + $
Canadian French: ctrl + ç
person Walk    schedule 13.09.2017
comment
Эти комбинации могут применяться только к macOS. Исходный ответ был расширен после того, как он был скопирован сюда: superuser.com/a/427 - person joki; 20.03.2020
comment
Надеюсь, этот ответ помог вам. - person Walk; 23.03.2020
comment
Я использую немецкую клавиатуру, и Ctrl + Alt Gr + 9 (где Alt Gr + 9 равно ]) у меня сработало. - person seyfahni; 02.04.2021

На моей датской клавиатуре это было не Ctrl + å, а вместо этого клавиша справа от å (у которой есть шляпа, тильда и умлаут)

person Kristian    schedule 06.10.2017
comment
В моей норвежской клавиатуре работал Shift + Alt + 9 (поскольку Alt + 9 ] ) - person Lennart Rolland; 25.10.2018
comment
На моей датской клавиатуре это на самом деле Ctrl + å... - person Lars; 13.06.2021

В MacOS с турецкой клавиатурой попробуйте:
Ctrl + Option + ü

Затем
> quit

person 0x01h    schedule 25.07.2019

Так и должно быть. Потому что ^], напечатанное в терминале на сервере, ничего не значит для клиентской стороны. Клиент должен поймать этот символ, прежде чем он будет передан на сервер, и, конечно, вы не можете просто записать его на терминал в программе, работающей на сервере.

Поэтому вам нужно прервать сессию другим способом. Есть много методов.

  1. Если вы находитесь внутри работающей программы, вы можете просто завершить ее (exit в оболочке или sys.exit() в python или exit() во многих других языках).
  2. Если вы не можете контролировать поток программы, вы можете закрыть терминал, уничтожив процесс, который является владельцем терминала. Вам нужно найти процесс, а затем использовать kill ... (PID процесса вместо ...).
  3. Если вы хотите закрыть клиент со стороны клиента, вам нужно сделать то же самое (kill ...), но на стороне клиента.
person Igor Chubin    schedule 27.07.2012

Ctrl + ] Это будет отображаться как ^], а затем

telnet> q q для выхода

person Sadee    schedule 25.05.2018
comment
Зависит от настройки клавиатуры. - person socona; 04.06.2019