linux - kali - No puedo cerrar una sesión de scpi(telnet) con echo "^]" cuando lo uso en un script
telnet linux ejemplo (7)
El ^]
significa ctrl + right
corchete ctrl + right
. Por extraño que sea, funciona. Serás llevado al prompt de telnet, donde puedes escribir quit.
En los teclados internacionales, el carácter no suele ser una sola tecla y debe reemplazarse por otra clave. La clave correcta suele ser la tecla a la derecha de P o la siguiente tecla después de eso.
Aquí hay una lista basada en los comentarios a continuación:
Finnish, Swedish, Norwegian, Danish: ctrl + å
French: ctrl + 6
German: ctrl + ü
Swiss: ctrl + ¨
Hungarian: ctrl + 5
Portuguese: ctrl + ´
Dutch, Belgian: ctrl + $
Canadian French: ctrl + ç
El uso de echo-e "/ 029"
tampoco funciona. Pero si usa strg + alt gr + ] directamente en una sesión de terminal -> funciona.
Tengo que hacer mi pregunta más concretamente:
Conecto un generador de RF (AGILENT) a través de Telnet / SCPI.
Si hago este manual en el terminal y presiono al final de la sesión CTRL + ALT GR + ] para ''^]'', entonces cierre la sesión de scpi correctamente y puedo escribir quit
para cerrar la sesión de telnet correctamente.
No hay mensaje de error en la pantalla del generador de RF. Entonces debería ser.
Si hago esto a través de una secuencia de comandos, la sesión de SCPI parece no reconocer la condición de señal de interrupción ''^]'' y se verá forzada a cerrarse después del final de la secuencia de comandos (telnet y scpi). -> Mensaje: "desconectado por un host externo". Desafortunadamente, recibo mensajes de error en la pantalla del generador de RF -> "encabezado no válido", etc.
Después de que aparece la conexión correcta: Conectado a 192,168.10.66 El carácter de escape es ''^]'' -> Este es el punto en cuestión. La entrada manual en el terminal funciona correctamente, el script no funciona.
Mi script se parece a esto:
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
En Linux es en realidad:
CTRL + ] luego ENTER
Finalmente escriba el comando quit
.
^]
telnet> quit
Connection closed.
[fred@localhost ~]$
En mi teclado danés no era Ctrl + å - sino la clave del lado derecho de å (que tiene sombrero, tilde y diéresis)
Para cerrar la sesión Use el comando a continuación
- Ctrl +]
- telnet> salir
funciona perfecto en REHL y CentOS.
Para salir de telnet en redhat:
escriba "CTRL+5"
y luego escriba "quit"
Tiene que ser así. Porque ^]
impreso en la terminal en el servidor significa nada para el lado del cliente. El cliente debe capturar este símbolo antes de que se transmita al servidor y, por supuesto, no puede simplemente escribirlo en la terminal en el programa que se ejecuta en el servidor.
Entonces necesitas interrumpir la sesión de otra manera. Hay muchos métodos.
- Si se encuentra dentro del programa en ejecución, puede finalizarlo de manera sencilla (
exit
en shell osys.exit()
en python oexit()
en muchos otros idiomas). - Si no puede controlar el flujo del programa, puede cerrar el terminal matando el proceso propietario del terminal. Necesita encontrar el proceso y luego usar
kill ...
(PID del proceso en lugar de...
). - Si desea cerrar el cliente del lado del cliente, debe hacer lo mismo (
kill ...
) pero en el lado del cliente.
Ctrl + ]
Esto se mostrará como ^] y luego
telnet> q
q es para dejar de fumar