Commande Expect avec variables

Résolu
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voilà je commence un script qui copie des fichiers sur une machines distante et pour cela j'utilise la commande expect.
Seulement j'aimerai que mon fichier verif.exp reprenne les variables du fichier depuis lequel il est appelé et les utilisent pour faire le scp.

Voici mon script de départ :

load.sh

#! /bin/sh

LOCATION="vm-test"
USERLDAP="francois"
VERIF="verif-config.sh"

cd /home/francois/deployment
./verif.exp &

if [ $? != 0 ]
then
echo "toto"
exit 0
fi

et dans le fichier verif.exp il y a :

#!/usr/bin/expect -f

spawn scp $VERIF $USERLDAP@$LOCATION:/data/www/
expect "password: $"
send "dingdong\n"
expect "\\$ $"


Seulement quand j'execute ça il me met comme message :
while executing
"spawn scp $VERIF $USERLDAP@$LOCATION:/data/www/"
(file "./verif.exp" line 3)


Pourriez-vous m'indiquez une solution ?

Merci beaucoup

Cordialement,
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Voir ce thread ;-))
0
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   5
 
Salut jipicy ;-)

Alors j'ai ajouter dans mon fichier verif.exp ça :

#!/usr/bin/expect -f

---> set force_conservative 1;
---> set VERIF [lindex $argv 0]
---> set USERLDAP [lindex $argv 1]
---> set LOCATION [lindex $argv 2]

spawn scp $VERIF $USERLDAP@$LOCATION:/data/www/
expect "password: $"
send "dingdong\n"
expect "\\$ $"

Et pour lancer le script load.sh je met les paramètres derrières :
root@vm-1:~/deployment# sh load.sh verif-config.sh francois vm-test
( et même si je ne lance que root@vm-1:~/deployment# sh load.sh j'ai le même résultat)

Et là il met met ça comme erreur

root@vm-1:~/deployment# sh load.sh verif-config.sh francois vm-test
root@vm-1:~/deployment# spawn scp @:/data/www/
ssh: : Name or service not known
lost connection
send: spawn id exp6 not open
while executing
"send "dingdong\n""
(file "./verif.exp" line 9)

Si j'ai bien compris ce que tu as mis dans l'autre topic.
0
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   5
 
AH j'ai mieux compris :-)

En fait au lieu de passer verif-config.sh francois vm-test en paramètre à load.sh il fallait les passer à verif.exp :-)

Par contre j'ai une "erreur" c'est à dire que j'ai ça maintenant :


francois@vm-test:~/deployment$ sh load.sh
spawn scp verif-config.sh francois@vm-test:/data/www/
The authenticity of host 'vm-test (192.168.1.212)' can't be established.
RSA key fingerprint is a6:69:6a:f9:89:5b:84:........etc ....
Are you sure you want to continue connecting (yes/no)? yes
dingdong
Please type 'yes' or 'no':

Et que je mette 'yes' ou 'no' ou rien ça ne fait rien et ne copie pas le fichier.

Aurais-tu une explication ?

Merci

Cordialement,
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
il faut exporter les variables
LOCATION="vm-test"
USERLDAP="francois"
VERIF="verif-config.sh"
export LOCATION USERLDAP VERIF
0
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   5
 
Salut dubcek;

et comment je fais après pour que ces variables soit utiliser dans le script verif.exp ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
avec $env(variable)
set loc $env(LOCATION)
0
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   5
 
Oki dubcek je vois ce que tu veux dire mais je n'ai pas la moindre idée de comment le mettre en place dans les scripts.
Est ce qu'il faut que je mette ça dans le verif.exp :
set loc $env(LOCATION)
set ver $env(VERIF)
set user $env(USERLDAP)

et que dans le load.sh je mette ça :
LOCATION="vm-test"
USERLDAP="francois"
VERIF="verif-config.sh"

$env(USERLDAP)
$env(LOCATION)
$env(VERIF)

Merci de votre aide.

Cordialement,
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
oui, mais ne pas oublier le export dans load.sh
et dans expect, pour tester si une variable d'environnement existe:
if [info exists env(VAR)] {
set var $env(VAR)
} else {
set var "undefined"
}
0