Commande Expect avec variables

Résolu/Fermé
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 4 avril 2008 à 11:25
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 4 avril 2008 à 13:40
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,

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 avril 2008 à 11:29
Salut,

Voir ce thread ;-))
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
4 avril 2008 à 11:56
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 mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
4 avril 2008 à 13:37
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 avril 2008 à 11:44
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 mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
4 avril 2008 à 12:07
Salut dubcek;

et comment je fais après pour que ces variables soit utiliser dans le script verif.exp ?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 avril 2008 à 12:26
avec $env(variable)
set loc $env(LOCATION)
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
4 avril 2008 à 13:02
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 avril 2008 à 13:40
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