Se connecter avec
S'enregistrer | Connectez-vous

[C / sh] probleme upload auto via FTP

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte
Expert Programmation

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).

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
Expert Programmation

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.

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 !
Lassé par la pub ? Créez un compte
Tom's guide dans le monde