[Expect] ftp, parametres et code retour

Fermé
jukilo Messages postés 2 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 14 novembre 2007 - 14 nov. 2007 à 11:51
jukilo Messages postés 2 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 14 novembre 2007 - 14 nov. 2007 à 13:34
Salut,

alors j'explique mon problème:
je veux faire une commande ftp automatique, que je fais avec expect. Jusque là, out va bien. Sauf que je voudrais:

1) passer le nom du serveur, login, pass, fichier... en parametre à mon script expect pour le rendre générique en fonction des données d'un formulaire php

2)retourner les codes d'erreur du ftp dans un fichier log pour le traiter ensuite et l'afficher dans le formulaire.

je marche de cette manière:

avec le formulaire php je génère un fichier paramftp.sh dans lequel il y a:
./templateftp.exp serveur login pass rep_distant rep_local fichier_a_envoyer

ensuite je traite le code retour
(il est lancé avec un cron)

dans templateftp.exp, il y a:
#!/usr/bin/expect -f

set timeout 3
set force_conservative 1;

spawn ftp $1

# On attend la reponse "220" (OK)
expect {
  timeout { puts "connexion impossible"; exit 1 }
  connected { puts "connexion réussie"}
  "220*\n"
}
#on envoit le login/mdp
expect ": $"
send "$2\n"
expect "Password:$"
send "$3\n"
expect {
	failed { puts "Identification impossible"; exit 2 }
	timeout { puts "Identification impossible"; exit 2 }
	"230*\n"
}

expect "ftp> $"
#on se place dans le repertoire distant
send "cd $4\n"
expect  {
	timeout { puts "répertoire non valide"; exit 3 }
	"250*\n"
}

expect "ftp> $"
#on se place dans le repertoire local
send "lcd $5\n"
expect "ftp> $"
set timeout 1800
#on donne le fichier à envoyer/recevoir
send "put $6\n"
expect {
	timeout { puts "Le fichier n'a pas été envoyé"; exit 4 }
	"226*\n"
}
set timeout 4
send "quit\n"
# On attend la coupure de connexion.
expect {
  timeout { puts "erreur a la deconnexion"; exit 5 }
  "221*\n"
}


Je ne cache pas que je n'arrive pas à passer de parametres à expect, ça ne marche pas mais je l'ai mis pour l'exemple
Et ensuite, je voudrais récupérer les codes retour du ftp, ou ne serait-ce que le message envoyé quand, par exemple, on n'arrive pas à se connecter. La solution que j'utilise (le timeout) ne me semble pas d'une fiabilité extraordinaire)

Merci d'avance

PS: je sais pas si je suis clair
PS2: le script exp tel quel fonctionne avec des vraies données
A voir également:

2 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
14 nov. 2007 à 12:06
Salut,

Tiens pour les paramètres à passer à ton script "expect", jettes un œil à ce topic ;-))
0
jukilo Messages postés 2 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 14 novembre 2007
14 nov. 2007 à 13:34
Ah cool c'est parfait!
quelqu'un aurait une idée pour renvoyer le code et le message d'erreur du ftp?
0