Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2011, 16h17   #1
Membre confirmé
 
Avatar de saymoneu
 
Homme Simon C.
Développeur Web
Inscription : avril 2010
Messages : 127
Détails du profil
Informations personnelles :
Nom : Homme Simon C.
Âge : 23
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2010
Messages : 127
Points : 271
Points : 271
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.
saymoneu est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 24/02/2011, 17h02   #2
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 549
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 549
Points : 4 269
Points : 4 269
Salut,

Peux-tu nous montrer ton script stp?

Merci
__________________
Alea Jacta Test!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/02/2011, 17h37   #3
Membre confirmé
 
Avatar de saymoneu
 
Homme Simon C.
Développeur Web
Inscription : avril 2010
Messages : 127
Détails du profil
Informations personnelles :
Nom : Homme Simon C.
Âge : 23
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2010
Messages : 127
Points : 271
Points : 271
Voila:

Code :
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 :
1
2
##Création d'une nouvelle clé sur le poste distant
ssh-keygen -t rsa etc etc...

Contenu de exp.sh:

Code :
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.
saymoneu est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/02/2011, 18h23   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
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.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/02/2011, 22h05   #5
Membre confirmé
 
Avatar de saymoneu
 
Homme Simon C.
Développeur Web
Inscription : avril 2010
Messages : 127
Détails du profil
Informations personnelles :
Nom : Homme Simon C.
Âge : 23
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2010
Messages : 127
Points : 271
Points : 271
Oui dans le premier.
saymoneu est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/02/2011, 22h41   #6
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 30
Vieux 25/02/2011, 09h28   #7
Membre confirmé
 
Avatar de saymoneu
 
Homme Simon C.
Développeur Web
Inscription : avril 2010
Messages : 127
Détails du profil
Informations personnelles :
Nom : Homme Simon C.
Âge : 23
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2010
Messages : 127
Points : 271
Points : 271
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
saymoneu est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 25/02/2011, 09h35   #8
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/03/2011, 11h25   #9
Membre du Club
 
Inscription : avril 2004
Messages : 51
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 51
Points : 49
Points : 49
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 :
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"
voleurdecarottes est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h42.


 
 
 
 
Partenaires

Hébergement Web