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 :

Problème avec expect


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé Avatar de saymoneu
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 248
    Points : 505
    Points
    505
    Par défaut Problème avec expect
    Bonjour à tous.

    J'ai un problème concernant un script que je réalise en bash. Il fait appel à un expect pour me connecter directement en ssh à une machine distante. Jusque là tout va bien, je suis bien connecté à la machine. Mais le script s'arrête là. En effet il reste coincé sur la machine distante et n'arrive pas à exécuter les commandes suivantes. Surement car la machine distante n'accede plus au script. Je me retrouve bloqué et je ne vois pas comment résoudre ce problème.

    Merci par avance pour vos réponses.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Peux-tu nous montrer ton script stp?

    Merci

  3. #3
    Membre confirmé Avatar de saymoneu
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 248
    Points : 505
    Points
    505
    Par défaut
    Voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/bin/bash
    BACKUPUSER=saymoneu
    PC_TARGET=desktop
     
    #création d'une clé
    if [ ! -e /home/$BACKUPUSER/.ssh/id_rsa.pub ]; then
    	ssh-keygen -t rsa -N "" -f /home/$BACKUPUSER/.ssh/id_rsa
    	echo "Clés générées"
    else
    	echo "Clé deja existante"
    fi
     
    ##connexion préliminaire au poste 192.168.XX.XX
    ssh 192.168.XX.XX
    exp.sh
    ##A partir d'ici les commandes ne sont plus exécutées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ##Création d'une nouvelle clé sur le poste distant
    ssh-keygen -t rsa etc etc...

    Contenu de exp.sh:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/expect
    set timeout 5
    spawn
    expect "password:$"
    send "mdp\n"
    Donc au final, je suis connecté sur la machine distante, j'ai l'invite de commande, mais toutes les commandes indiquées dans le script pour la suite ne se lancent plus...
    Merci de votre aide et si y'a besoin de plus d'informations n'hésitez pas.

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    mais toutes les commandes indiquées dans le script pour la suite ne se lancent plus...
    Dans quel script ? Le 1er ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Membre confirmé Avatar de saymoneu
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 248
    Points : 505
    Points
    505
    Par défaut
    Oui dans le premier.

  6. #6
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Ben forcément ça ne peut pas le faire

    Tes commandes doivent être intégrées dans le script "expect", c'est d'ailleurs tout l'intérêt d'utiliser expect...

    Quelques exemples d'utilisation
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  7. #7
    Membre confirmé Avatar de saymoneu
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2010
    Messages : 248
    Points : 505
    Points
    505
    Par défaut
    Malheureusement même en placant les instructions dans le expect ca ne fonctionne pas...
    Je me répete mais la connexion ssh fonctionne parfaitement, je me retrouve bien sur l'invite de commande du poste à distance. Il ne se passer plus rien après.

    Merci tout de même de ta réponse. Je vais étudier le expect un peu plus en détails

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par saymoneu Voir le message
    Malheureusement même en placant les instructions dans le expect ca ne fonctionne pas...
    Attention expect est très pointilleux sur la syntaxe
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    On peut très bien intégrer du code expect dans un script .sh.
    Saymoneu, voilà un petit script d'essai que j'ai écrit, il permet de se connecter en ssh sur une machine et d'y récupérer des fichiers via scp.
    (Il marche sur un Red Hat, attention j'ai cru comprendre que la syntaxe de certaines commandes pouvait être différente selon le système.)

    Par contre je comprends mal deux choses :
    - l'utilisation de la commande "expect eof" (je ne vois pas bien son utilité)
    - le timeout (on dirait qu'il s'applique à plusieurs actions)
    En tout cas le script fonctionne ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    
    #!/bin/sh
    
    fonction_ssh()
    {
    /<chemin d'installation d'expect>/expect -- << EOF
    
    ### PARAMETRAGE
    # Forcer les micro pauses
    set force_conservative 0
    
    # Timeout en secondes
    set timeout 1
    
    # Taille du buffer
    #match_max 100000
    
    
    
    ### CONNEXION AU SERVEUR
    spawn ssh <identifiant>@<adresse>
    expect "*assword: "
    send "<mot de passe>\r" 
    expect eof
    
    
    
    ### PLACEMENT DANS LE DOSSIER CONTENANT LES FICHIERS A RECUPERER
    send "cd <chemin>\r"
    expect eof
    
    
    
    ### COPIE DES FICHIERS
    send "scp <racine nom>* <identifiant>@<adresse>:<chemin destination>\r"
    expect "*assword: "
    send "<mot de passe>\r" 
    expect eof
    
    EOF
    }
    
    echo "Lancement du script"
    fonction_ssh
    echo "Fin du script"

  10. #10
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Bonjour les gars, j'ai un script expect qui marche parfaitement sur ubuntu mais je dois l'exécuter sur windows j'ai deja télécharger Tcl mais en fait je dois convertir ce script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #
    # Written by Ner (bellaymard@yahoo.fr) - June 2013
    #
     
    spawn telnet [lindex $argv 0]
     
    expect ":" {send "admin\r"}
    expect ">" {send "1"}
    expect ">" {send "1"}
    expect ">" {}
    en script expect qui s'exécute sur windows ou bien il n'y aurait il pas une autre manière d'automatiser mon telnet ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/01/2010, 20h03
  2. Problème avec le lieur "Expected a file name : "
    Par RA/m dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/06/2004, 08h41
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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