[R] Rafraichir le contenu FTP

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

[R] Rafraichir le contenu FTP

#1

Message par DimVar »

Bonjour à tous,


Dans un script, je controle la presence d'un fichier sur un ftp (free).
Pour les test d'ecriture, j'utilise filezilla.
Voila les etapes et le pb rencontré :

Le dossier X contient un fichier Y.
Je lance la boucle qui "scrute" la presence d'un fichier Y dans le dossier X.
Le programme me messagebox que le fichier est bien present (_FTP_ListToArray)
Avec filezilla, je suppr le fichier.
Le programme m'informe tjs qu'un fichier est present !!!
Hors, dans la fonction qui scrute, je fais bien un ftpconnect et close à chaque appelle de la fonction scrute.

J'ai testé en CMD avec ftp, que je cree ou suppr un fichier sur le serveur FTP, la commande LS m'affiche pourtant le bon resultat. Pas le script... :?

Je continue de chercher sur le fofo pdt ce temps.


D'avance merci.
Modifié en dernier par DimVar le mar. 31 janv. 2012 10:52, modifié 1 fois.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#2

Message par DimVar »

Code : Tout sélectionner

While 1
    $fileOnFtp = _CheckIfFtpFile()
    If $fileOnFtp <> -1 Then MsgBox (0,"","il y a un fichier")
    Sleep (10000);a modifier
WEnd


Func _CheckIfFtpFile()
    $Open = _FTP_Open('')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    $ftpdirR = _FTP_DirSetCurrent($Conn, $FtpDir)
    If $ftpdirR = 0 Then MsgBox (0,"","le dossier n'existe pas")
    $arrayFile = _FTP_ListToArray($Conn, 2)
    _FTP_Close($Open)
    If $arrayFile[0] = 0 Then
        Return -1
    Else
        Return $arrayFile[1]
    EndIf
EndFunc
UP
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#3

Message par mikell »

ça fait penser à une lecture de cache
Faudrait essayer 2 trucs
- vider $arrayFile en début de fonction (bof ?)
- mieux, le paramètre $l_Flags de _FTP_ListToArray ($INTERNET_FLAG_NO_CACHE_WRITE, $INTERNET_FLAG_RELOAD, $INTERNET_FLAG_RESYNCHRONIZE )
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#4

Message par DimVar »

Merci Mikell :wink:
J'avais essayé de reinit la variable tableau mais ça changeai pas.
J'ai donc opté pour un autre serveur FTP.(je pense que le soucis venait du proxy ou cache de celui-ci)
Et là ça roule sauf que maintenant j'arrive à créer les dossiers (et sous dossiers), je peux même écrire un fichier,mais le fichier arrive vide et la fonction _FTP_FilePut me renvoi "0".
Si je fais le même test (création de dossiers et fichier) en client FTP (filezilla), là aucun pb... :twisted:
Je précise : Le user à les droits admin RWX.

5 jours que je suis dessus !!! ARGL.....
Modifié en dernier par DimVar le lun. 30 janv. 2012 18:33, modifié 1 fois.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
Ahbadiane
Niveau 5
Niveau 5
Messages : 139
Enregistré le : jeu. 20 déc. 2007 22:39
Localisation : Paris
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#5

Message par Ahbadiane »

@DimVar,

A tout hasard, essaye d'utiliser mon utilitaire de test FTP, je l'avais écrit pour débroussailler les fonctions FTP
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#6

Message par DimVar »

Merci Ahbadiane.
Je testerais ca demain. (Suis pas sur le lieu de test)
C'est moi ou on peut pas preciser le port dans ton utilitaire ? (le port du serveur FTP n'est pas 21)
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#7

Message par mikell »

Par curiosité que donneraient les fctns _FTP_ProgressUpload et _FTP_GetLastResponseInfo ?

ou faire un _FTP_FileOpen avec l'attribut $GENERIC_WRITE :?:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Ahbadiane
Niveau 5
Niveau 5
Messages : 139
Enregistré le : jeu. 20 déc. 2007 22:39
Localisation : Paris
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#8

Message par Ahbadiane »

C'est moi ou on peut pas preciser le port dans ton utilitaire ? (le port du serveur FTP n'est pas 21)
Effectivement je n'ai pas paramétré le port dans la fonction _FTP_Connect().
D'après la doc, par défaut le port est 21
Tu peux ajouter le paramètre en ligne 198 dans mon script FTPTest.au3
DCVolo
Niveau 4
Niveau 4
Messages : 57
Enregistré le : dim. 25 avr. 2010 20:54
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#9

Message par DCVolo »

Sinon j'ai eu le même soucis pour 0octet envoyé, en fait c'est ton antivirus qui bloque grâce à son parefeu l'envoie de donnée de ton programme.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#10

Message par DimVar »

Ahbadiane a écrit :... essaye d'utiliser mon utilitaire de test FTP...
Deja merci pour ce soft.
Et voila ce qu'il me retourne:
_FTP_Open : OK
_FTP_SetStatusCallback : OK
_FTP_Connect : OK
Test si le fichier distant existe
Taille traité : 161 Octets
_FTP_FilePut : Erreur - @error=-1
================================================================================
mikell a écrit :Par curiosité que donneraient les fctns _FTP_ProgressUpload et _FTP_GetLastResponseInfo ?
ou faire un _FTP_FileOpen avec l'attribut $GENERIC_WRITE :?:
Merci Mikell.
_FTP_ProgressUpload ne fonctionne pas non plus.
_FTP_FileOpen cree bien le fichier mais je ne vois pas de fonction _ftp_filewrite ?
DCVolo a écrit :Sinon j'ai eu le même soucis pour 0octet envoyé, en fait c'est ton antivirus qui bloque grâce à son parefeu l'envoie de donnée de ton programme.
Pas d'av ni parefeu, merci qd meme.


Sinon, j'ai testé ce matin le script de chez un autre client(autre archi, autre lieu), il fonctionne !
Serait ce du à un proxy ou machin du genre ?
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Rafraichir le contenu FTP

#11

Message par DimVar »

:idea: !!! HALLELUJAH !!! :idea:

Pour l'analyse (et pour info) :
On savait que ca fonctionnait par Filezilla, que ca ne fonctionnait pas avec le script.
On a donc essayé avec cmd et ftp de DOS.
Idem, ca marche pas. Mais ce coup ci on a eu une erreur :
425 Unable to build data connection: Connection timed out
Google m'a renvoyé sur cette erreur des infos sur le fait d'ouvrir le port data (20) sur le routeur.
Mais comme j’étais sensé bosser en mode passif, je n'avais donc pas à ouvrir le port 20.
La réponse était donc dans la commande FTP_Connect. Il fallait passer le param 1 à $i_Passive et hop....

Merci à vous tous pour vos pistes qui m'ont permis d'étoffer mes connaissances FTP.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Répondre