web-dev-qa-db-fra.com

Impossible de fermer une session scpi (telnet) avec echo "^]" lorsque je l'utilise dans un script

L'utilisation de echo-e "\ 029" ne fonctionne pas non plus. Mais si utilisation strg + alt gr + ] directement dans une session de terminal -> cela fonctionne.

Je dois poser ma question plus concrètement:
Je connecte un générateur RF (AGILENT) via Telnet/SCPI.
Si je fais ce manuel sur le terminal et appuie sur à la fin de la session CTRL + ALT GR +] pour '^]' puis fermez correctement la session scpi et je peux taper quit pour fermer correctement la session telnet.
Il n'y a pas de message d'erreur sur l'affichage du générateur RF. Il devrait donc en être ainsi.

Si je le fais via un script, la session SCPI ne semble pas reconnaître la condition du signal de rupture '^]' et sera forcée de se fermer après la fin du script (telnet et scpi). -> Message: "Déconnecté par un hôte étranger". Malheureusement, je reçois des messages d'erreur sur l'affichage du générateur RF -> "en-tête invalide", etc.

Après une connexion réussie apparaît: Connecté à 192.168.10.66 Le caractère d'échappement est ‘^]’ -> C'est le point en cause. La saisie manuelle dans le terminal fonctionne correctement, le script ne fonctionne pas.

Mon script ressemble à ceci:

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    
35
Bernie

Sous Linux, c'est en fait:

CTRL + ] puis ENTER

Enfin, saisissez la commande quit.

^]

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

Pour quitter telnet sur redhat:
tapez "CTRL+5" puis tapez "quit"

32
Kindi BALDE

Pour fermer la session, utilisez la commande ci-dessous

  1. Telnet> quitter
  2. cela fonctionne parfaitement dans RHEL et CentOS.

.

8

Le ^] Signifie le crochet ctrl + right. Aussi étrange que cela soit, cela fonctionne. Vous serez redirigé vers l'invite telnet, où vous pourrez taper quit.

Sur les claviers internationaux, le caractère ] N'est souvent pas une seule clé et doit être remplacé par une autre clé. La clé correcte est généralement la clé à droite de P ou la clé suivante après cela.

Voici une liste basée sur les commentaires ci-dessous:

Finnish, Swedish, Norwegian, Danish: ctrl + å
French: ctrl + 6
German: ctrl + ü
Swiss: ctrl + ¨
Hungarian: ctrl + 5
Portuguese: ctrl + ´
Dutch, Belgian: ctrl + $
Canadian French: ctrl + ç
4
Walk

Sur mon clavier danois, ce n'était pas Ctrl + å - mais à la place la clé à droite de å (qui a un chapeau, un tilde et un tréma)

1
Kristian

Sur MacOS avec clavier turc, essayez:
Ctrl + Option + ü

Ensuite,
> quit

0
0x01h

Ctrl + ] Cela s'affichera comme ^] puis

telnet> q q est pour quitter

0
Sadee

Il doit en être ainsi. Parce que ^] Imprimé sur le terminal du serveur ne signifie rien pour le client. Le client doit attraper ce symbole avant qu'il ne soit transmis au serveur et bien sûr, vous ne pouvez pas simplement l'écrire sur le terminal dans le programme exécuté sur le serveur.

Vous devez donc interrompre la session d'une autre manière. Il existe de nombreuses méthodes.

  1. Si vous êtes à l'intérieur du programme en cours d'exécution, vous pouvez simplement le terminer (exit dans Shell ou sys.exit() in python or exit() in de nombreuses autres langues).
  2. Si vous ne pouvez pas contrôler le flux du programme, vous pouvez fermer le terminal en éliminant le processus propriétaire du terminal. Vous devez trouver le processus, puis utiliser kill ... (PID du processus au lieu de ...).
  3. Si vous souhaitez fermer le client côté client, vous devez faire de même (kill ...) Mais côté client.
0
Igor Chubin