[R] Lire un fichier sur un ftp via le script
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
[R] Lire un fichier sur un ftp via le script
Mon script est enfun fini
reste plus que la protection .
J'aimerais que a chaque démarage , le script verifie l'accé a internet , si non il quit et que le script aille verifié si un fichier ( X ) exist sur un ftp , et si le contenu du fichier correspond bien a une key que je lui orait donné .
Exemple , cette persone télécharge le script , je lui donne un code ( 3 par exemple : nom du fichier .txt ) qui se trouve sur un ftp , ensuite je lui donne une key ( s2a435s4a32x468456sa34 par exemple : qui se trouve dans le fichier .txt ) .
Si ce fichier exist et que le contenu du fichier est correct alor le script se lance .
si non il ne se lance pas et s'autodetruit directement .
J'aimerais aussi faire une historique de log . a chaque connection le script irai écrir dans un fichier ( qui se trouverai sur un ftp , exemple : log3.txt , ce qui correspond au nom du .txt que j'ai cité plus haut ) avec écriture de la date , heure + IP ( si possible ... ) ou une autre info qui pourait me dire si c'est toujours la meme personne ou cette personne fait tournée le script.
Aprés cela mon script sera fini pour de bon .
Je remercie quand meme déja ce forum pour toute l'aide qu'il ma apporter et je le remercie déja en avance pour la fin du script....
Soily
reste plus que la protection .
J'aimerais que a chaque démarage , le script verifie l'accé a internet , si non il quit et que le script aille verifié si un fichier ( X ) exist sur un ftp , et si le contenu du fichier correspond bien a une key que je lui orait donné .
Exemple , cette persone télécharge le script , je lui donne un code ( 3 par exemple : nom du fichier .txt ) qui se trouve sur un ftp , ensuite je lui donne une key ( s2a435s4a32x468456sa34 par exemple : qui se trouve dans le fichier .txt ) .
Si ce fichier exist et que le contenu du fichier est correct alor le script se lance .
si non il ne se lance pas et s'autodetruit directement .
J'aimerais aussi faire une historique de log . a chaque connection le script irai écrir dans un fichier ( qui se trouverai sur un ftp , exemple : log3.txt , ce qui correspond au nom du .txt que j'ai cité plus haut ) avec écriture de la date , heure + IP ( si possible ... ) ou une autre info qui pourait me dire si c'est toujours la meme personne ou cette personne fait tournée le script.
Aprés cela mon script sera fini pour de bon .
Je remercie quand meme déja ce forum pour toute l'aide qu'il ma apporter et je le remercie déja en avance pour la fin du script....
Soily
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
pour une détection du WAN, _GetIP() te sera utile (également pour l'IP que tu veux dans le log de retours)
où alors, attaque directement le téléchargement via inetget, du coups si il n'y a pas de réseau, elle sortira en erreur.
pour le log de traçabilité, faudra passer par une udf ftp, je n'en connais pas ou ne m'en souviens plus, mais je sais que ça existe, voir forum anglais.
où alors, attaque directement le téléchargement via inetget, du coups si il n'y a pas de réseau, elle sortira en erreur.
pour le log de traçabilité, faudra passer par une udf ftp, je n'en connais pas ou ne m'en souviens plus, mais je sais que ça existe, voir forum anglais.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
le ftp ...il n'est pas necessaire de passer par ce protocol... ce fichier se trouve sur un nom de domaine ? comme pour un site web ? le ftp ne sert qu'a transferer les données sur le site.
Dans le cas ou tu veux vraiment passer par le ftp, n'oublie pas que l'accés est soit anonymes ou privé et il sera plus facile pour certain d'aller visionner ou de prendre le fichier....
pour ma part je ferait comme pour l'exemple qui se trouve dans le dossier 3\Extras\AutoUpdateIt du nom de AutoUpdateIt.au3, cette exemple montre comment lire un fichier sur un domaine
>Pour la verification d'accés au net, tu peux faire un ping sur un adresse comme ci-dessous.
y a d'autre maniere pour verifier si internet existe (wininet.dll/url.dll....), pour ma part j'utilise wininet (trouvé dans la documentation microsoft) et non ping
il faudra juste remplacer les msgbox par l'action désirée.
Dans le cas ou tu veux vraiment passer par le ftp, n'oublie pas que l'accés est soit anonymes ou privé et il sera plus facile pour certain d'aller visionner ou de prendre le fichier....
pour ma part je ferait comme pour l'exemple qui se trouve dans le dossier 3\Extras\AutoUpdateIt du nom de AutoUpdateIt.au3, cette exemple montre comment lire un fichier sur un domaine
>Pour la verification d'accés au net, tu peux faire un ping sur un adresse comme ci-dessous.
Code : Tout sélectionner
Func _verifNetExist()
Dim $InetActive = Ping("www.google.ca")
If Not $InetActive > 0 Then
MsgBox(4112, "Aucune connection !", "Vérifier que vos cables sont bien branché")
Else
MsgBox(0,"Activation","Soyez le ou la bienvenu(e)",3)
EndIf
EndFunc
il faudra juste remplacer les msgbox par l'action désirée.
Modifié en dernier par ani le mer. 21 nov. 2007 21:14, modifié 1 fois.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
....avec cette dll on a plusieur fonction dont le internetGetConnectedstate (y a déjà une librairie (include\inet.au3 mais il manque cette fonction :p )
Pour plus d'info allez sur le site microsoft car suis un noobs...
vu que je n'ai pas encore mi les divers global constantes (lan/modem/offline/configuration/Rasinstalled..., ni les retour d'erreur)
merci d'"avance au utilisateur les plus doué
ensuite InternetCheckConnection ...
Pour plus d'info allez sur le site microsoft car suis un noobs...
vu que je n'ai pas encore mi les divers global constantes (lan/modem/offline/configuration/Rasinstalled..., ni les retour d'erreur)
merci d'"avance au utilisateur les plus doué
Code : Tout sélectionner
Func _IGetConnected()
$return = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int_ptr", 0, "int", 0)
If $return[0] = 0 Then
$return = MsgBox(0, "AUCUNE CONNECTION", "Verifié que vous avez accés au net")
Else
$return = connection($sz_Nom,$sz_pass,$URl)
EndIf
return $return
EndFunc
Modifié en dernier par ani le mer. 21 nov. 2007 13:42, modifié 2 fois.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
il a bien l'air de detecté si internet ou pas , mais si ya internet il me met une erreur , line -1 elke chose , variable used without being declared . si non si ya pas internet il met bien la box .
g transformer le code en sa
erreur ?
g transformer le code en sa
Code : Tout sélectionner
Func _IGetConnected()
$answer = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int_ptr", 0, "int", 0)
If $answer = 0 Then
MsgBox(0, "AUCUNE CONNECTION", "Verifié que vous avez accés au net")
exit
Else
Start()
EndIf
Endfunc
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
dans la lib on a deux parametre (le flag et le reserve les deux 0)
Correction du code
Pour revenir a la lib wininet elle est composé de 94 fonctions + 6 fonctions de security.... une belle lib avec 100 fonctions ^^'
Correction du code
Code : Tout sélectionner
_IGetConnected()
Func _IGetConnected()
$answer = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int_ptr", 0, "int", 0)
If $answer[0] = 0 Then
$answer = MsgBox(0, "AUCUNE CONNECTION", "Verifié que vous avez accés au net")
Else
$answer = start()
EndIf
return $answer
EndFunc
Modifié en dernier par ani le mer. 21 nov. 2007 13:12, modifié 3 fois.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Peut-être la fonction start que tu a cree ?
Sinon la fonction wininet fonctionne très bien (mais comme je l'ai signalé suis un noobs donc, il manque les divers retour d'Erreur, sinon as tu essayé avec la version ping voir si il te retourne la même erreur?
Je n'avais pas fait attention, dans la fonction tu avait indiqué, exit juste après le msg, je l'ai retiré voir post
Sinon la fonction wininet fonctionne très bien (mais comme je l'ai signalé suis un noobs donc, il manque les divers retour d'Erreur, sinon as tu essayé avec la version ping voir si il te retourne la même erreur?
Je n'avais pas fait attention, dans la fonction tu avait indiqué, exit juste après le msg, je l'ai retiré voir post
Modifié en dernier par ani le mer. 21 nov. 2007 13:44, modifié 1 fois.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
log = voir chapitre macro et filewrite(line)
tu y tiend au ftp
est-il en anonyme ou privé ? si c'est privé sa signifie que tu va inscrire dans ton script (l'adress ftp + nom + pass) sa sent le dangé..
Pour le moment je n'ai pas fait de test sur mon domaine, ni l'exemple dont je t'avais promis, désolé :§,,,, c'est une mauvaise période, d'ici 14 jours je ne serait plus là pour une période indéterminé....
Bon cette fois je rentre chez moi à tantôt, d'ici une petite heure.
tu y tiend au ftp
est-il en anonyme ou privé ? si c'est privé sa signifie que tu va inscrire dans ton script (l'adress ftp + nom + pass) sa sent le dangé..
Pour le moment je n'ai pas fait de test sur mon domaine, ni l'exemple dont je t'avais promis, désolé :§,,,, c'est une mauvaise période, d'ici 14 jours je ne serait plus là pour une période indéterminé....
Bon cette fois je rentre chez moi à tantôt, d'ici une petite heure.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
http://www.autoitscript.com/forum/index ... hl=ftp.au3
tu y trouveras l'udf + un fichier exemple réalisant un put
tu y trouveras l'udf + un fichier exemple réalisant un put
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
Merci , je pensse avoir trouvé . Reste quelque petit problemes de variables :
Je ne sais pas quoi mettre pour les variables . j'ai esseyer sa mais sans resultat .
Code : Tout sélectionner
Func _FTPConnect($l_InternetSession = "ftp.xxxxxxx" , $s_ServerName = "ftp.xxxxxxxx" , $s_Username = "xxxxx" , $s_Password = "xxxx" , $i_ServerPort = 21 , $l_Service = 1, $l_Flags = 0, $l_Context = 0)
Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_InternetConnect[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_InternetConnect[0]
EndFunc ;==> _FTPConnect()
Code : Tout sélectionner
Func _FTPMakeDir($l_FTPSession, $s_Remote)
Local $ai_FTPMakeDir = DllCall('wininet.dll', 'int', 'FtpCreateDirectory', 'long', $l_FTPSession, 'str', $s_Remote)
If @error OR $ai_FTPMakeDir[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_FTPMakeDir[0]
EndFunc ;==> _FTPMakeDir()
Code : Tout sélectionner
Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)
Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_FTPPutFile[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_FTPPutFile[0]
EndFunc ;==> _FTPPutFile()
Code : Tout sélectionner
Func _FTPClose($l_InternetSession)
Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession)
If @error OR $ai_InternetCloseHandle[0] = 0 Then
SetError(-1)
Return 0
EndIf
Return $ai_InternetCloseHandle[0]
EndFunc ;==> _FTPClose()
Je ne sais pas quoi mettre pour les variables . j'ai esseyer sa mais sans resultat .
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
issus du fichier exemple qui était fournit à côté de l'udf ...
ici, on ouvre la session, et on la stocke dans $Open, le 'MyFTP Control' est un nom quelconque pour ouvrir cette connexion, c'est un identifiant interne.
$server et l'adresse de ton serveur
$username et $pass ... no comment
et pour le _FtpPutFile, 1er arg, la session, 2eme : le chemin locale du fichier à envoyer, le 3eme : le chemein relatif sur le serveur FTP
Code : Tout sélectionner
$server = 'ftp.example.com'
$username = 'secretusers'
$pass = 'hiddenpass'
$Open = _FTPOpen('MyFTP Control')
$Conn = _FTPConnect($Open, $server, $username, $pass)
$Ftpp = _FtpPutFile($Conn, 'C:\WINDOWS\Notepad.exe', '/somedir/Example.exe')
$Ftpc = _FTPClose($Open)
$server et l'adresse de ton serveur
$username et $pass ... no comment
et pour le _FtpPutFile, 1er arg, la session, 2eme : le chemin locale du fichier à envoyer, le 3eme : le chemein relatif sur le serveur FTP
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
y a t il eu connexion au serveur FTP, cf log du serveur ?
Qelles sont les valeurs retournées respectivement par
afin de détecter à quel moment l'erreur a eu lieu ?
Faut commencer par ces diagnostiques
Qelles sont les valeurs retournées respectivement par
Code : Tout sélectionner
_FTPOpen
_FTPConnect
_FtpPutFile
Faut commencer par ces diagnostiques
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
-
- Niveau 3
- Messages : 43
- Enregistré le : lun. 29 oct. 2007 21:20
- Status : Hors ligne