[Expect] ftp, parametres et code retour
jukilo
Messages postés
2
Statut
Membre
-
jukilo Messages postés 2 Statut Membre -
jukilo Messages postés 2 Statut Membre -
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:
ensuite je traite le code retour
(il est lancé avec un cron)
dans templateftp.exp, il y a:
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
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:
- [Expect] ftp, parametres et code retour
- Code ascii - Guide
- Parametres de mon ordinateur - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide