Help plizz

guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004 - 2 avril 2004 à 10:46
 cs_matriel - 7 juin 2004 à 17:58
Voila jai un script en socket pour mettre un fichier sur mon ftp et la source sapelle /ftp_send je c pas si des gens connaisse !! et ej voudrait mettre un timer pour que laction /ftp_send ce repete toute els 15 min voici el code

; ftpsend
; Snippet de kenji - www.ScriptsDB.org

; permet l'envoi d'un fichier sur un compte ftp

;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯;
;  ftp send, par `kenji` <kenji-irc@altern.org>        ;
;                                                      ;
;  bout de codé réalisé pour mIRC6.x                   ;
;  02:40 11/07/02 - fr                                 ;
;______________________________________________________;
;  permet d'envoyer un fichier donné sur un compte ftp ;
;  (configuration  à la main, voir plus bas...)        ;
;  nb: ce script est à but éducatif. il est basique    ;
;  mais il sera facile d'y implémenter une interface.. ;
;  virer les "echo etc.." ou mettre un ";" pour ne pas ;
;  avoir d'affichage.                                  ;
;                                                      ;
;  utilisation: /ftp_send                              ;
;______________________________________________________;

;; /ftp_send
;  déclenche l'envoi du fichier spéficié sur le serveur ftp donné.
;  (les informations sont à modifier ci-dessous..)
alias ftp_send {
  var %sock = $+(ftpsend_,$ticks)
  ftpdata_create %sock
  ;;informations à modifier;;
  ; ci dessous, le fichier à envoyer (spécifier le chemin complet)
  var %fichier = $mircdir/stats/hybrid-life/stats.txt

  ; l'adresse du serveur ftp
  var %serveur = ftp.hybrid-life.com
  ; le port du serveur ftp (habituellement 21)
  var %port = 21
  ; le nom d'utilisateur
  var %login = hybrid-l
  ; le mot de passe associé au nom d'utilisateur
  var %pass = webmaster
  ; le répertoire distant dans lequel sera déposé le fichier
  var %rep = /web/musik/test/
  ;;=================================================================;;

  ; inscription des données en mémoire.. (hash)
  ftpdata_add %sock file %fichier
  ftpdata_add %sock host %serveur
  ftpdata_add %sock port %port
  ftpdata_add %sock user %login
  ftpdata_add %sock pass %pass
  ftpdata_add %sock cwd %rep
  ftpdata_add %sock pos 0

  sockopen %sock $ftpdata_get(%sock,host) $ftpdata_get(%sock,port)
}

;; gestion des données en mémoire (une hash associée à chaque socket)
alias -l ftpdata_create { var %hash = $$1 | if !$hget(%hash) { hmake %hash 5 } }
alias -l ftpdata_clear { var %hash = $$1 | if $hget(%hash) { hfree %hash } }
alias -l ftpdata_add { var %hash = $1 | if $hget(%hash) { hadd %hash $2 $$3- } }
alias -l ftpdata_get { var %hash = $1 | return $iif($hget(%hash),$hget(%hash,$2)) }

;;=====================================;;
;  gestion des sockets                  ;
;;=====================================;;
;------ - ------------- - ---  ---;
;  canal de commande              ;
;----------- ----- --   ----------;
; gestion de l'ouverture du socket
on *:sockopen:ftpsend_*:{ if $sockerr { echo 4 -ta ..ftpsend: erreur lors de la connexion au serveur. envoi annulé. | ftpdata_clear $sockname | return } }

; lecture des données
on *:sockread:ftpsend_*:{
  if $sockerr { return }
  sockread %temp
  while $sockbr {
    ; affichage des données reçues
    echo -ta ..ftpsend: $sockname -> %temp
    ; traitement du code reçu
    var %code = $gettok(%temp,1,32)
    ftpsend_treatcode $sockname %code $gettok(%temp,2-,32)
    ; lecture du prochain paquet..
    sockread %temp
  }
}

;------ - ------------- - ---  ---;
;  canal de données               ;
;----------- ----- --   ----------;
; envoi des données du fichier

on *:sockopen:t_ftp_send_*:{
  if $sockerr { echo 4 -a erreur | return }
  echo -a canal de données ouvert
}
on *:sockwrite:t_ftpsend_*:{
  if $sockerr { return }  var %sock $remove($sockname,t_) , %pos $ftpdata_get(%sock,pos) , %file = $quoted($ftpdata_get(%sock,file))

  ; pour un affichage éventuel des données..
  var %pourcent = $+($round($calc((%pos * 100)/ $file(%file).size),1),%)
  var %size = ( $+ $bytes(%pos,3).suf $+ / $+ $bytes($file(%file).size,3).suf $+ )
  echo -ta ..ftpsend: $nopath($longfn(%file)) : %pourcent : %size

  ; tant que la totalité du fichier n'a pas été envoyée..
  if (%pos < $file(%file).size) {
    bread %file %pos 8192 &data
    sockwrite $sockname &data
    ftpdata_add %sock pos $calc(%pos + $bvar(&data,0))
  }
  ; sinon, le transfert du fichier est complet. on ferme socket de données et session.
  else { sockclose $sockname | sockwrite -n %sock QUIT }
}

;------ - ------------- - ---  ---;
;  gestion des codes reçus        ;
;----------- ----- --   ----------;

;; /ftpsend_treatcode <socket> <code> [données]
;  exécute l'action associée au code de réponse <code> du serveur ftp
alias -l ftpsend_treatcode {  var %sock $1 , %code $$2 , %data = $3-
  ; nom d'utilisateur
  if (%code == 220) { sockwrite -n %sock user $ftpdata_get(%sock,user) }
  ; mot de passe
  elseif (%code == 331) { sockwrite -n %sock pass $ftpdata_get(%sock,pass) }
  ; logged in
  elseif (%code == 230) { sockwrite -n $sockname TYPE I }
  ; type *image* OK
  elseif (%code == 200) { sockwrite -n %sock PASV }
  ; mode passif OK.
  elseif (%code == 227) {
    ; tentative d'ouverture du canal de données, suivant les informations fournies
    var %addr = $remove($gettok(%data,-1,32),$chr(40),$chr(41))
    var %host = $replace($gettok(%addr,1-4,44),$chr(44),$chr(46))    var %hport $gettok(%addr,5,44) , %lport $gettok(%addr,6,44) , %port = $calc(%hport * 2^8 + %lport)

    sockopen $+(t_,%sock) %host %port
    ; on change le répertoire courant
    sockwrite -n %sock CWD $iif($ftpdata_get(%sock,cwd),$ifmatch,/)
  }
  ; changement de répertoire courant OK.
  elseif (%code == 250) {
    ; commande d'envoi du fichier de données, via la canal de commande
    var %file = $ftpdata_get(%sock,file)
    sockwrite -n %sock STOR $nopath($longfn(%file))
  }
  ; le canal de donnée est ouvert. on envoie le fichier.
  elseif (%code == 150) {    var %pos $ftpdata_get(%sock,pos) , %file $ftpdata_get(%sock,file)
    bread %file %pos 8192 &data
    sockwrite $+(t_,%sock) &data
    ftpdata_add %sock pos $calc(%pos + $bvar(&data,0))
  }
  ; session terminée.
  elseif (%code == 221) { ftpdata_clear %sock }
}

;------ - ------------- - ---  ---;
;  librairie                      ;
;----------- ----- --   ----------;
;; $quoted(chemin/fichier)
;  renvoie une chaine "chemin/fichier" (pour les chemins contenant des espaces)
alias -l quoted return $iif(" isin $$1-,$$1-,$+(",$$1-,"))



si vous pouvait m aider ca serait vrement tres sympatique

Merci @++

21 réponses

cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
2 avril 2004 à 12:22
Bonjour,

Alors déjà, évite de poster un topic comme "Help plizz", en général, si quelqu'un poste sur le forum, c'est qu'il a besoin d'aide, alors si tout le monde posterai ca comme titre ...
La prochaine fois, essaie d'être plus explicite sur ton problème ;)

Donc, pour répondre au problème, c'est très simple, il suffit de taper :
/timer 0 900 ftp_send

ici, le 0 c'est le nombre de répétition du timer, donc 0 = infini.
900 c'est l'interval en seconde pendant lequel la commande va s'éxécuter, 900 secondes = 15 minutes.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
2 avril 2004 à 12:45
Oki désoler je ferait plus gaffe la prochaine foie euhh donc enfaite ce script et sur mon bot et donc je peut faire eun comande du genre

on 100:text:!ftp_send*:#:{
/timerftp 0 900 ftp_send
}


ca peut marcher ?
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
2 avril 2004 à 16:48
Oui ca marchera. (pour toute personne ayant un pseudo comportant 100 d'accès sur ton mIRC)

on 100:text:!ftp_send*:#:timerftp 0 900 ftp_send


Je ne vois pas pourquoi tu ouvres des { } si c'est que pour une commande ...
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
2 avril 2004 à 18:46
oki bin enfaite c'est uen abitude de faire ca lol pour le level 100 je c'est ;) jen ai mis plin sur mon bot hihi :big)
0

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

Posez votre question
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
3 avril 2004 à 16:10
Reee excuse euh ce script nevoie pas de fichier plus gros que 8192 byte et mon fichier fait plus et je trouve aps pour quoi il envoie pas le restant :( le code et plus haut

merci @++
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 17:54
bread %file %pos 8192 &data


Je pense que c'est la ligne à adapter ...
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
3 avril 2004 à 17:59
et ej doit faire koi avec ca !!! je doit la metre ds mon script ou alors je doit remplacer un truc ???
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 18:07
C'est une ligne du script à adapter.
8192 est codé sur 8 octets, et il faut respecter cet base. Met par exemple à la place 16384, ou +, en fonction de ton fichier, mais essaie de rester dans les multiples de 8.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
3 avril 2004 à 18:18
oki ds le script si tu regarde il y a deja une phrase avec 8192 et jai essaier de mettre 16384 mais ca change rien donne moi plus de precison et ou je met ta phrase ?? je comprend pas tout
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 18:25
Bon,

Je viens de tester l'alias tel qu'il est, sans rien adapter au code, et j'ai uploadé un fichier de 400 ko sur mon FTP.
Ce code limite en rien la taille du fichier pouvant être uploadé.
C'est peut-être ton ftp qui sature ?
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
3 avril 2004 à 18:29
dsl il limte moi jupload des fichier plus gros k 400ko il sona 13 000 ko et donc ca passe pas !! c ca qui passe pas :s
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 18:35
Il se passe quoi alors quand tu essaies d'uploader ce gros fichier ? un message d'erreur ? Si tu n'as pas de message d'erreur, mais à la place, les pourcentages qui s'affichent successivement, c'est que l'upload est bien entrain de se faire.
Si après le fichier n'est pas présent sur ton ftp, c'est un problème lié à ton ftp. Essaie d'uploader ton fichier à la main pour voir si ton ftp l'accepte pour commencer.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 18:44
D'ailleur, pour le chemin, met à la place de $mircdir/stats/hybrid-life/stats.txt, le chemin suivant :
stats/hybrid-life/stats.txt
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
3 avril 2004 à 18:54
tien voila ce k ca marque

[18:53] ..ftpsend: ftpsend_24521530 -> 250 CWD command successful.
[18:53] ..ftpsend: ftpsend_24521530 -> 150 Opening BINARY mode data connection for stats.txt
[18:53] ..ftpsend: stats.txt : 60.7% : (8.00KB/13.1KB)
[18:53] ..ftpsend: stats.txt : 100% : (13.1KB/13.1KB)
[18:53] ..ftpsend: ftpsend_24521530 -> 226 Transfer complete.

mais il upload k 8192 ko a la main tout el fichier passe jai deja essaier donc je pige pas
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 18:57
Il ne doit pas uploader le bon fichier alors ...
Là il upload un fichier de 13.1 ko, alors que moi j'ai pu uploader un fichier de 400 ko, donc tu as dû spécifier un mauvais chemin.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
3 avril 2004 à 18:59
no nnon mon fichier stats.txt fait bien 13.1 ko je confirme mais bon je pige pas pk il upload k 8192 !!!!
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 19:03
"dsl il limte moi jupload des fichier plus gros k 400ko il sona 13 000 ko et donc ca passe pas !! c ca qui passe pas :s "
13 000 ko = 13 mo
Et maintenant c'est 13.1 ko ? lol
1000 octets = 1 kilo octet (ko)
1000 ko = 1 mo
1000 mo = 1 go

Et où ta vu qu'il n'uploadait que 8192 ? Si tu parles de cette valeur dans le code source, c'est juste un découpage binaire du fichier, rien avoir avec la taille totale du fichier.
Il te suffit de te rendre sur ton FTP pour te rendre compte de l'intégrité du fichier uploadé.
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
guigui59430 Messages postés 13 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 3 avril 2004
3 avril 2004 à 19:34
bin en maxi il upload 8192 alors k le fichier fai plus parsek qd je lupolad avec mirc donc le script la taille sur el ftp et de 8192 alors k le fichier fait plus et si je lupload a la mani donc par le client ftp il upload la totaliter du fichier
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
3 avril 2004 à 22:34
- Explique toi clairement
- Evite le style SMS, on est pas là pour faire du déchiffrage.

Pourquoi j'ai réussi à uploader un fichier de 400 ko alors que toi tu n'as pas réussi à uploader un fichier de 13,1 ko ?
Et quand tu dis que le fichier fait 8192 sur ton ftp, 8192 QUOI ? quelle unité ?
-<gras>[ Sorn_Drixer ]-</gras>
-
Un problème ? une question ? N'hésitez pas, le forum est là pour ça.

:question) Vous pouvez me retrouver sur koliserv.dyndns.org:9010
0
INECOGENITO Messages postés 1 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 6 juin 2004
6 juin 2004 à 00:51
c'est très bien
mais comment faire le contraire cad lire un fichier sans pour autant le télécharger sur son disque dur (exemple : afficher son contenu avec des echo)

merci de me renseigner
@++
0
Rejoignez-nous