IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

récupérer la sortie d'un telnet


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut récupérer la sortie d'un telnet
    Salut,
    J'ai créé un script qui me permet de lancer des commandes AT dans l'interface de connection telnet d'un modem. les commandes sont successivement entrées simplement par un "echo AT..."
    Et pour lancer mon script: sh monscript | telnet (ip et port)
    Le script fonctionne bien. Lorsque les commandes sont exécutées, elles retournent soit "ok" soit "error" dans la fenetre.
    J'aimerais pouvoir capturer ces résultats de commandes afin de pouvoir traiter chaque cas. Comment faire??
    Merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 717
    Par défaut
    Bonjour Philinux,

    Pourquoi ne pas mettre la commande telnet dans ton script ?

    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh monscript | telnet (ip et port) > fichier_resultat 2>&1
    ...
    ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Salut N_Bah,
    Merci beaucoup d'avoir répondu rapidement.

    Je ne vois pas comment mettre le telnet directement dans le script. En effet si je commence mon script par telnet ... la connection au telnet s'établit. mais ensuite comment lancer chaque commande dans la fenetre telnet ouverte? si je refais de nouveau appel a telnet une nouvelle fenetre telnet s ouvre.

    D'autre part j'ai testé : sh monscript | telnet (ip et port) > fichier_resultat 2>&1. Je retrouve ainsi dans le fichier tout ce qui est affiché dans la fenetre telnet.
    mais le 2>&1 redirige la sortie d'erreur et la sortie standard dans un fichier, mais c'est valable pour une commande shell, pas pour une commande telnet
    Bref je ne vois pas trop comment faire ce que tu me dis (je débute en programmation shell!) pourrais tu etre un peu plus précis?
    Merci!

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 717
    Par défaut
    fenêtre ? Quelque chose me dit que tu n'utilises pas GNU/Linux...

    Sous GNU/Linux, la commande telnet n'ouvre pas de fenêtre, c'est une commande shell comme une autre.

    Je ne sais pas comment récupérer l'affichage d'un programme "fenêtré".

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Je me suis mal exprimé je voulais parler du shell. Si je met le telnet dans le script je ne vois pas comment rediriger chaque commande at dans la meme session telnet ouverte

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 717
    Par défaut
    ah, d'accord.
    Sans le script, je vais peut-être dire une bêtise, mais ça devrait pouvoir être fait de la même façon que tu rediriges la sortie du script vers telnet, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "AT..." | telnet (ip port)...

  7. #7
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Salut,
    Si je fais echo "AT..." | telnet (ip port)... pour chaque commande AT, à chaque fois une nouvelle session telnet s'ouvre.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Sans l'avoir testé avec telnet, je te dirais de jeter un coup d'oeil sur netcat (nc). C'est fait pour ce genre de script interactif.

    Edit:

    Sinon il y a aussi expect qui semble fort utilisé.

    A titre de test sur les redirections, tu peux aussi essayer une boucle while read:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TTY=$(tty)
    while read line
    do
      telnet 123.123.123.123 < $TTY | tee /tmp/telnet
    done
    Ici on est en mode interactif pour le test et les réponses du telnet sont redirigées vers la sortie standard (pour l'interactivité) et vers un fichier.

  9. #9
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut
    Salut

    Le problème avec expect, c'est que si je fais un expect "ok", tant que "ok" n'est pas affiché, le script va rester bloqué en attente de ce "ok".

    J'ai testé netcat. J'arrive a récupérer en sortie dans un fichier tout ce qui s'affiche a l'écran. Et les réponses aux commandes apparaissent comme ceci:^Mok^M
    Mais la encore comment faire pour que en cas d'affichage de "error" le script s'interrompe en lançant une commande AT de fermeture de connection?
    Si j'utilise while read dans mon script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while read line
    do
    commande AT 1
    commande AT 2
    etc..
    done
    alors le test ne se fera qu'après avoir exécuté toutes les commandes de la boucle while.

Discussions similaires

  1. Récupérer la sortie d'une commande
    Par oceeco dans le forum wxPython
    Réponses: 3
    Dernier message: 11/02/2007, 21h37
  2. Récupérer la sortie standard dans une autre classe
    Par EvilAngel dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/12/2006, 18h15
  3. [C#] Récupérer la sortie d'un programme DOS
    Par olivier_23 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/08/2006, 14h54
  4. Réponses: 6
    Dernier message: 12/04/2006, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo