Se connecter / S'enregistrer
Votre question

[C / sh] probleme upload auto via FTP

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
1 Décembre 2007 16:51:14

Hello tout le monde je vous expose mon probleme :

je suis actuellement en train de faire un programme en C qui modifie à intervale régulier une page hébergée sur un serveur. Mon probleme : pour uploader mon fichier modifié, je souhaite utiliser le client FTP linux via la fonction system()

voilà comment je fais :

  1. void envoiPage(){
  2. system("ftp ftpperso.neuf.fr");
  3. system(mon_login);
  4. system(mon_password);
  5. system("delete index.html");
  6. system("put index.html");
  7. system("exit")
  8. }


seulement voila, pas de probleme pour lancer la premiere commande shell, mais une fois dans le programme ftp, system() ne peut pas envoyer les commandes à cause du "sous-shell" de la commande ftp...

j'espère que c'était clair...

alors une solution ? une commande fort utiles qui m'est malheureusement inconnue ? un programme capable de transférer un fichier sans "sous-shell" ? j'attends vos réponses...

Autres pages sur : probleme upload auto via ftp

a b L Programmation
1 Décembre 2007 18:28:58

Oui, ftp est un programme qui a son propre shell.

La seule possibilité est la redirection des flux IO standard.
Met tes commandes dans un fichier texte et redirige l'entrée standard du clavier dans le fichier ("commande < fichier_commandes.txt").
Ou peut-être balancer les commandes en C dans le stdin par un fprintf (mais je ne sais pas si ça marche).
1 Décembre 2007 19:00:50

le coup des fprintf c'était bien joué, mais je confirme que ça ne marche pas ^^

sinon pour la redirection de l'entrée standard j'ai une réaction : apparement il prend bien le login, mais s'arrête au password. Et quand je tape ce dernier manuellement, il ne le reconnait pas (j'ai essayé de marthyriser la touche backspace avant de taper le mot de passe). Mais bon comme il y a une réaction, je vais continuer de ce côté là. Merci bien pour l'info :) 

  1. void envoiPage(){
  2. system("ftp ftpperso.neuf.fr < test.txt");
  3. }


  1. test.txt :
  2. mon_login
  3. mon_password
  4. delete index.html
  5. put index.html
  6. exit
Contenus similaires
a b L Programmation
1 Décembre 2007 19:51:31

oui c'est ce que je craignais un peu :) 

Sous DOS, il y a l'option -s pour passer un fichier de commande (là on peut y mettre le password sans problème).
Il faudrait voir s'il n'y a pas une option de ce style sous ton shell. J'ai rapidement regardé sous man, mais j'ai pas vu.
1 Décembre 2007 22:14:38

merci super l'info je cherche et je dis quoi (comme on dit dinch'nord ^^)
1 Décembre 2007 22:31:16

youpi ça marche ! merci beaucoup !

j'ai dû aller jusqu'à la méthode :
#!/bin/sh
USER=userid
PASSWD=userpw
ftp -n f2dev <<SCRIPT
user $USER $PASSWD
binary
get some.file
quit
SCRIPT
pour que ça marche mais ça y est ! Encore merci pour l'aide !
Contenus similaires
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS