Upload ftp par des ShellExecute?? est ce que c'est faisable?

cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 12 août 2007 à 23:16
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 - 16 août 2007 à 19:33
salut tout le monde!
après plusieurs tentative de travail avec le composant Indy, je me demande si je ne peux pas faire le upload d'un fichier texte en utilisant des ShellExecute??
c'est a dire, imiter les commandes suivantes :
//////////////
>ftp 10.5.55.55
>user
>pass
>send ....
//////////////
par des ShellExecute de la forme :
ShellExecute(Handle, nil, 'CMD', aCmdLine, nil, sw_Hide);

SVP, j'ai besoin de votre aide!
merci
A voir également:

28 réponses

Utilisateur anonyme
13 août 2007 à 01:32
Ben mon ptit Othland pourquoi réouvrir un thread ? Puis si les composants Indy fonctionne pas c'est peut etre que tu as fait une erreur ou qu'il y a un truc qui va pas coté serveur.

ShellExecute c'est juste à executer un shell c'est à dire une application : c'est pas un range poubelle comme on pourrait le penser. En aucun cas tu pourras transferer ou récupérer un fichier sur un serveur et meme pas t'y connecter.
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 09:49
Bonjour Othland,

je ne sais pas si cela peut t'aider mais dans l'autre thread que tu avais ouvert tu cherchais un script
il faut savoir qu'un simple fichier texte que nous allons appeler toto.txt qui est dans le répertoire REP.
tu peux faire la commande suivante en mode console

ftp -s:c:\REP\toto.txt

dans le fichier toto.txt tu mets les commandes suivantes

open 10.5.55.55
user
pass
cd (répertoire sur serveur FTP)
lcd (répertoire sur client local)
mget *.txt (te prend tout les txt sur le répertoire du serveur)
mdelete *.txt pour effacer
quit

et cela juste enn mode console pour te dépanner.
Ceci étant dis je fais faire un copier coller de ton code et je reviens.

couf

PS: francky à raison pas la peine d'ouvrir un second thread
0
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
13 août 2007 à 10:30
ATTENTION

Le protocole FTP n'est déjà pas très sécurisé car le mot de passe est en clair dans les échanges avec le serveur mais en plus si tu le mets en clair dans un fichier texte ...


Le composant ftp fonctionne correctement et de plus il n'est pas compliqué à mettre en oeuvre ...
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 10:33
RE

 je ne sais pas trop sur quel Thread te répondre je vais te répondre sur celui ci

Pour que ton code marche chez moi j'ai du rajouter

idftp1.ChangeDir('/repertoire de destination sur le serveur');

ensuite dans mes clauses uses j'ai ceci
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdFTP, IdFtpCommon;

en espérant que j'ai put t'aider
ah j'oubliais pour tester j'ai mis en commentaires cette ligne
//IdFTP1.ReadTimeout:=600;
Tiens nous au courant cela m'interesse.
couf
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
13 août 2007 à 10:38
désolé pour ce second thread, mais je suis vraiment dans la merde!!
j'ai essayé cette solution de script, mais ça ne marche pas! j'ai une erreur : Error opening script file
je n'ai rien trouvé sur ma machine cible!
et puis dans la fenetre dos j'ai un affichage descriptif de tout les arguments (-v,....)
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
13 août 2007 à 10:48
j'ai utilisé ce code :
////////////
IdFTP1 := TIdFTP.Create(nil);
// Initialize with proper settings.
IdFTP1.Host := ip;
IdFTP1.Username := 'user';
IdFTP1.Password := 'pass';
// Connect.
IdFTP1.Connect;
try
  IdFTP1.ChangeDir('C:/');
except on E: Exception do showmessage(E.Message);
end;

try
  IdFTP1.TransferType := ftASCII;
  IdFTP1.Put('C:\Documents and Settings\nmcuser\Desktop\cells.txt', 'File.txt');
except on E: Exception do showmessage(E.Message);
end;
IdFTP1.Free;
//////////////

et là, j'ai la fameuse erreur "COMMAND NOT IMPLEMENTED.PRO04EL1"
et puis c'est pour cela que j'ai laisser tomber cette methode et penser aux scripts
aidez moi SVP
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
13 août 2007 à 11:01
@othland: mais t'écoutes rien ou quoi ? lol

On te dit: idftp1.ChangeDir('/repertoire de destination sur le serveur'
); pas sur le client !
Alors ne fais pas IdFTP1.ChangeDir('C:/');
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 11:08
Salut,

 Sylvlinux tu as raison mais vu l'adresse IP qu'il a donné 10.5.*.* (adressage privé)
sur son PC je pense que le risque est moindre

couf
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 11:28
RE,
désolé "je squatte le trhead"

sur windwos démarrer-->Exécuter ftp -s:c:\REP\toto.txt
fonctionne chez moi.

couf
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
13 août 2007 à 11:46
ET BEN!!!
quand je fais moi :
ftp -s:c:\documents and settings\nmcuser\desktop\tt.txt

il me dis : Error opening script file c:\documents.
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 12:23
Re
écoutes après j'arrète de squatter

as ton avis il n'a pas un blème quelques parts?
regarde ton chemin.
c:\documents and settings\nmcuser\desktop\tt.txt
je crois que l'espace qu'il ya dans ton chemein lui pose problème.
met un répertoire sur la racine
style c:\rep\tt.txt
et evite c:\mon répertoire  (PAS D'ESPACE DANS TON CHEMIN)

couf
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
13 août 2007 à 12:31
c bon c bon , ça marche!! avec un script créé comme fichier texte
mais maintenant il reste un petit problème
comment je peux connaitre le nom de la session sur laquelle mon programme tourne!
comme ça, je peux créer mon fichier dans le bureau de la session en cours???
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 12:58
Re,

et dire que j'avais dis que je ne squattrais plus.

1) Déja tu peux mettre réponse accepté cela servira au autres utilisateurs du site


2)Ensuite ton autre question c'est:

"comment je peux connaitre le nom de la session sur laquelle mon programme tourne!"


Yo mon frère  moi pas tous comprendre.

Détaille ta question s'il te plait

tu fais quoi là tu utilises quel programme, tu es mode texte, ou tu es de nouveau avec ton applicatif?

couf
0
Utilisateur anonyme
13 août 2007 à 13:38
Salut,

-Othland : je vois pas en quoi d'ouvrir un nouveau thread te sort plus de l'impasse ?

- Methode de Couf : Effectivement on peut lancer un script de ce type (et pas faire un simple ShellExecute comme le disait Othland) mais je trouve la méthode un peu cracra.

-Othland : je t'ai passé un lien vers un source et un lien vers la RFC. Je rejoins Flo : tu n'as pas analysé assez ton code, tu n'as pas assez lu les codes, tu n'as pas fais assez de recherche (il y a plein de sources), tu n'as pas cherché à analyser tes erreurs et ton code a été fait à l'arrache  (Pas mal d'erreurs pour une procédure toute bête) .

Enfin bref, tu as en définitif perdu beaucoup plus de temps en travaillant comme ca .
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
13 août 2007 à 13:48
C'est clair, son problème, il aurait pu le résoudre en une dizaine de minutes (une heure grand maximum).
Mais bien sûr, chercher, ça fatigue...

Alors forcément, la méthode "flemme", c'est la forum avec comme question "pourquoi mon code il marche pas ?".
Et puis, au final, la solution adoptée est loin d'être la meilleure, et le temps pris pour la trouver est supérieur à celui qu'aurait pris une recherche soigneuse...

Mais bon, là, va falloir changer les mentalités, et c'est pas gagné.
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 14:27
Salut,

 Attention juste une précision.
Pourquoi un script fait peur à tous le monde?
J'ai aussi passé son programme au débugger et lui est apporté aussi des solutions en mode graphique.Et cela aussi vous devriez le noté.
 j'espère qu'un jour vous ne serez pas admin de serveur et devans trouvé des solutions, en mode console,  car tout de suite
le cracra se met à ressembler à de l'OR PTDR

couf
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
13 août 2007 à 14:28
là, je m'excuse mes confrères, mes j'ai cherché avant de poster sur le forum (j'ai toujours eu ce reflexe! mais bref)
j'ai utilisé le composant ftp de Indy mais ça n'a pas marché à cause de l'erreur 'COMMAND NOT IMPLEMENTED' et là j'ai commencé à bombarder à gauche et à droite!
je m'excuse encore une fois pour le second thread!
et pour la session, sur le pc ou je dois mettre mon application, y a plusieurs session, je veux juste connaitre le nom de la session qui execute monj appli, c'est tout!

Merci à vous tous!
0
Utilisateur anonyme
13 août 2007 à 15:49
Couf : le problème n'est pas là . Seulement s'il suffisait de faire un simple fichier texte pour faire un client FTP ca serait cool : dans ton cas de figure le client FTP est très limité en en fonctionnalitées (Juste la méthode Put) mais pour un vrai client FTP ta technique n'est pas à préconiser. Ensuite la gestion des paramètres, pas possible par cette technique . Ensuite tu ne peux pas récupérer et traiter les erreurs : No no no cette méthode est cracra de chez cracra j'insiste et je signe .

Ben là tu vois Othland faut réouvrir un thread car ca n'a plus rien avoir avec du FTP (Tu veux connaitre la session ou  tu vas installer ton application) et là encore tu n'as pas cherché. (Regarder à Comment détecter l'ouverture d'une session courante).

Othland on ne te repproche rien , CS est fait pour ca . Mais soit plus posé et plus percéverant dans tes recherches :  Prend cela plus comme un conseil .

 Pour commencer tu aurais du déja essayé de te connecter au serveur sans rien faire , le problème du TimeOut aurait été réglé.

Ensuite tu n'as pas pris le temps d'analyser des sources :  ChangeDir tu l'avais complêtement zappé et tu l'as meme pas vu .

Pour conclure Othland : tu sembles pressés de finir ton projet : dis moi j'espère que tu n'es pas entrain de faire un soft commercial ? . Déjà en étant pressé on fait que des bétises . Mais surtout c'est très dangereux de faire une telle chose quand on débute  peine. Même des mecs  comme Flo, Japee, Cari, Cirec,f0xi  ne le font pas et pourtant ils sont très bons. Je pense  qu'il  serait sage de rester à sa place d'amateurs .
 
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
13 août 2007 à 16:47
Je signe et j'approuve tout ce que vient de dire Francky 36:15 !!!

Sérieusement, couf, le mode console, c'est cool, c'est pratique (surtout pour l'admin de serveur) mais pas adapté à un développement logiciel. Suffit de regarder les scripts VB pour s'en rendre compte (ceci n'est pas un troll contre le vb).

Même du côté de linux, ça fait pagaille: les scripts (ceux qui sont interprétés par /bin/bash ou qqch de similaire) ne sont pas uniformément reconnus en fonction de je-ne-sais-trop-quel-exécutable-de-je-ne-sais-trop-quelle-librairie-de-je-ne-sais-trop-quelle-version-de-telle-distribution-et-pas-celle-là. Alors non merci ! Surtout quand Indy fait mieux et en plus souple !
0
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
13 août 2007 à 17:07
Salut,

  ça sent le troll à plein nez votre truc et je ne vais pas tomber dans ce piège.
Donc vous avez raison.
Pour ma défense, je dirais juste qu'il a posé une question, et j'y ai répondu.
j'ai aussi (j'insiste sur ce point) trouver l'erreur de son programme.mais ça apparemment

Ensuite et pour finir (ne pas surencherir SVP) les scripts comme celui là m'ont déja sauvé la mise en clientèle plus d'une fois.
Et à vrai dire quand on voit que MS fait powershell pour faire du script je me dis que je n'ai pas tous les torts.
Trouve toi sur un PC, qui ,je ne sais pour quel raison se trouve avec certaines sockets fermées, ou qui te permettent de transferer
en mode asynchrone seulement et tu béniras les scripts.

CECI ETANT DIS VOUS AVEZ RAISON CE N'EST PAS DE LA MANIERE DE FAIRE UN CLIENT FTP.
DONC PLEASE PAS DE SURENCHERE SVP MERCI D'AVANCE.

couf
0
Rejoignez-nous