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 :

Expect et temporisation


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut Expect et temporisation
    Bonjour,

    Dans un script en local, je lance :

    1) un mysqldump sur un serveur distant (en utilisant la commande ssh pour faire exécuter la commande côté serveur)

    2) un rsync, exécuté en local, qui effectue une synchronisation avec mon serveur distant.

    Pour passer les mots de passe, j'utilise spawn/except/send.

    J'ai deux questions :

    a) le mot de passe est-il visible sur le net lors de l'exécution du script, ou bien l'appel au serveur est-il crypté par défaut ?

    b) mes commandes ne semblent que partiellement exécutées, comme si le rsync arrivait trop tôt, sans laisser au dump le temps de se terminer correctement.
    Cela parle-t-il à quelqu'un ?

    Merci par avance pour toute piste, et bonne soirée.


    Philippe,

  2. #2
    Membre actif
    Avatar de debianhunter
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Par défaut
    Bonjour,

    a/ Sur les dernieres versions, rsync passe par ssh donc les mots de passes seront chiffres sur le net. Par contre, il sont en clair dans le fichier, ce qui n'est pas tres secure dans la mesure ou si ta machine et compromise, le serveur distant risque fortement de le devenir aussi.
    b/ Peux-tu afficher la sequence expect/send qui pose probleme ? Est-ce que tu attends bien le prompt entre deux send ? Est-ce qu'il y a un expect apres la derniere commande pour laisser le temps a celle-ci de se terminer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    expect "debianhunter ~ #"
    send -- "ls > mySuTry\r"
    expect "debianhunter  ~ #"
    send_user "Bye-bye\n"

  3. #3
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut
    Merci,

    a) Comment savoir quelle est ma version de rsync et si elle passe par ssh ?

    b) Voici mon code :

    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
     
    #!/usr/bin/expect -f
     
    set force_conservative 1
    set timeout 3
    match_max 100000
     
    spawn ssh user@server "mysqldump  -u sqluser -psqlpasswd nomdebase | gzip > chemindistant/fichier"
    expect "*?assword:*"
    send -- "passwd\r"
    expect "*~$:*"
     
    spawn rsync -ova user@server:/chemindistant/* /cheminlocal/
    expect "*?assword:*"
    send -- "passwd\r"
    expect "*~$:*"
     
    send -- "\r"
    expect eof
     
    exit

  4. #4
    Membre actif
    Avatar de debianhunter
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Par défaut
    Re,

    a/ Pour avoir la version:
    ;o)
    Sinon, pour savoir si rsync passe par ssh ou rsh, rien de tel qu'un essai en local. Dans le doute, on peut toujours forcer ssh avec l'option -e:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rsync -e 'ssh' ...
    b/ La encore, ca a l'air correct, mais il faudrait faire des essais en local (par exemple en lancant un script qui ecrit dans un fichier au bout d'un certain moment) pour voir si la regexp utilisee pour le prompt est ok, ...
    D'ailleurs, en ecrivant ca, ca me fait penser qu'il y a un timeout a 10s par defaut que l'on peut changer avec:
    C'est peut-etre un point a verifier aussi.

    Bonne continuation !

  5. #5
    Pgs
    Pgs est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Par défaut
    Merci,


    a)
    rien de tel qu'un essai en local
    Je suis un peu novice dans ce domaine. Comment faire ce test ?


    b) Pour le prompt, il a quelque chose qui me surprend : lorsque je lance le script, le prompt ne s'affiche pas entre mes instructions. Il ne réapparaît qu'en fin de script. Est-ce pour cela que l'expect "*~$:*" n'a pas d'effet ?


    Bonne soirée,

    Philippe,

  6. #6
    Membre actif
    Avatar de debianhunter
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Par défaut
    Bonjour,

    Tu peux verifier les ports de destination avec netstat qui sont utilises en cours de rsync. Mais par defaut, toutes les versions recentes de rsync utilisent ssh (voir la page de man). Si tu veux etre sur que ce soit toujours le cas, utilise l'option -e ssh.

    Citation Envoyé par Pgs Voir le message
    b) Pour le prompt, il a quelque chose qui me surprend : lorsque je lance le script, le prompt ne s'affiche pas entre mes instructions. Il ne réapparaît qu'en fin de script. Est-ce pour cela que l'expect "*~$:*" n'a pas d'effet ?
    expect lance un sous-shell, donc c'est normal de ne pas voir le prompt.

    Un point qui m'a echappe hier:
    Ca me parait un peu court. Change la valeur afin que les commandes puissent finir correctement. Expect va arreter la commande au bout de 3secondes, ce qui n'est pas assez pour ce que tu veux faire.

Discussions similaires

  1. [debutant]temporisation
    Par sly33 dans le forum Débuter
    Réponses: 4
    Dernier message: 12/08/2004, 13h56
  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. Temporisation pendant verouillage de l'objet matable
    Par Rdjedidene dans le forum Administration
    Réponses: 14
    Dernier message: 09/06/2004, 10h52
  4. [Plugin]package does not match the expected package src
    Par Fladnag dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 10/03/2004, 20h17
  5. temporisation
    Par forthx dans le forum C
    Réponses: 5
    Dernier message: 25/06/2003, 15h49

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