Rechercher : dans
Par :

Commande Expect avec variables

Dernière réponse le 4 avr 2008 à 13:40:22 Maillon, le 4 avr 2008 à 11:25:25 
 Signaler ce message aux modérateurs

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,

Configuration: Windows XP
Firefox 2.0.0.13

Meilleures réponses pour « Commande Expect avec variables » dans :
Comment récupérer le résultat d'une commande dans une variable Voir Comment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
[Linux] Utiliser la commande 'su' VoirPréambule Se connecter sous un autre ID utilisateur avec "su" Démarrer un nouveau shell de connexion avec "su -" Revenir au shell précédent Suspendre le shell du compte root Notes Préambule La commande "su" (Switch User, appelée plus...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Variables d'environnement VoirVariables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de...
VBScript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Il s'agit en fait d'une zone de la mémoire réservée pour le stockage d'une valeur. Les...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...

1

jipicy, le 4 avr 2008 à 11:29:25

Salut,

Voir ce thread ;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

3

Maillon, le 4 avr 2008 à 11:56:27

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.

Répondre à Maillon

7

Maillon, le 4 avr 2008 à 13:37:55

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,

Répondre à Maillon

2

dubcek, le 4 avr 2008 à 11:44:15

Hello
il faut exporter les variables
LOCATION="vm-test"
USERLDAP="francois"
VERIF="verif-config.sh"
export LOCATION USERLDAP VERIF

Répondre à dubcek

4

Maillon, le 4 avr 2008 à 12:07:49

Salut dubcek;

et comment je fais après pour que ces variables soit utiliser dans le script verif.exp ?

Répondre à Maillon

5

dubcek, le 4 avr 2008 à 12:26:45

Avec $env(variable)
set loc $env(LOCATION)

Répondre à dubcek

6

Maillon, le 4 avr 2008 à 13:02:52

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,

Répondre à Maillon

8

 dubcek, le 4 avr 2008 à 13:40:22

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"
}

Répondre à dubcek