Tom's Guide > Forum > Programmation > [C / sh] probleme upload auto via FTP

[C / sh] probleme upload auto via FTP

Forum Programmation : [C / sh] probleme upload auto via FTP

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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 :

Code :
  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...

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

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

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



Code :
  1. test.txt :
  2. mon_login
  3. mon_password
  4. delete index.html
  5. put index.html
  6. exit

Répondre à bigwatch

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.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

J'ai trouvé comment faire en shell:
http://www.inlumineconsulting.com: [...] g.ftp.html

Si c'est juste pour toi, la meilleure solution pour la sécurité est le .netrc (tu peux refiler le script sans donner le login/password).

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

merci super l'info je cherche et je dis quoi (comme on dit dinch'nord ^^)

Répondre à bigwatch

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 !

Répondre à bigwatch
Tom's Guide > Forum > Programmation > [C / sh] probleme upload auto via FTP
Aller à :

Il y a 1041 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens