当我在脚本中使用它时,不能用echo“^”closuresscpi(telnet)会话

echo-e "\ 029"也不起作用。 但是如果在terminal会话中直接使用strg + alt gr + ] – >它可以工作。

我必须更具体地问我的问题:
我通过Telnet / SCPI连接射频发生器(AGILENT)。
如果我在terminal上执行本手册,并在会话结束时按CTRL + ALT + GR + ] ,然后正确closuresscpi会话,我可以键入quit以正确closurestelnet会话。
RF发生器的显示屏上没有错误信息。 所以应该是。

如果我通过脚本执行此操作,SCPI会话似乎无法识别中断信号条件'^]',并且在脚本(telnet和scpi)结束后将被强制closures。 – >消息:“由外部主机断开”。 不幸的是,我在RF发生器的显示屏上显示错误信息 – >“无效标题”等。

出现连接成功后:连接到192,168.10.66转义字符是'^]' – >这是问题所在。 手动input在terminal工作正常,脚本不起作用。

我的脚本看起来像这样:

 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 

Solutions Collecting From Web of "当我在脚本中使用它时,不能用echo“^”closuresscpi(telnet)会话"

在Linux上它实际上是:

CTRL + ]然后回车

最后输入quit命令。

 ^] telnet> quit Connection closed. [fred@localhost ~]$ 

在redhat上退出telnet:
键入"CTRL+5" ,然后键入"quit"

它一定是如此。 因为^]在服务器端打印的意思是客户端没有任何东西。 客户端在传输到服务器之前必须先捕获这个符号,当然,您不能直接在服务器上运行的程序中写入终端。

所以你需要以其他方式中断会话。 有很多方法。

  1. 如果你正在运行的程序中,你可以简单地终止它(在python中exit() shell或者sys.exit()或者在许多其他语言中exit() )。
  2. 如果无法控制程序流程,可以通过终止所有者的进程来关闭终端。 你需要找到进程,然后使用kill ... (进程的PID而不是... )。
  3. 如果你想从客户端关闭客户端,你需要做同样的事情( kill ... ),但是在客户端。

^]表示ctrl + right括号。 奇怪的是,它是有效的。 你会被带到远程登录提示符,在那里你可以输入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 + ç 

在我的丹麦语键盘上,它不是Ctrl + å – 而是右侧的关键字(它有一个帽子,一个代字符和一个变音符号)

关闭会话使用下面的命令

  1. Ctrl +]
  2. telnet>退出

它在REHL和CentOS中完美运行。