Script unix pour un FTP recursif ?

Fermé
ido daisuke -  
 raphael -
j'ai besoin de transferer via FTP tout le contenu d'un repertoire
pour ce faire, je n'ai accès comme client ftp qu'à la commande ftp du shell unix.

Est-il possible de faire un script permettant d'envoyer tout le contenu d'un repertoire (dossiers et fichiers), a partir du nom de ce repertoire, via la commande ftp ?

20 réponses

  1. aubertin
     
    j'ai déjà écrit des scripts en shell qui permettent de faire des transferts par ftp de répertoire et sous-répertoire en mode récursif
    avec une connexion sécurisée user et mot de passe écrite dans le script.
    on peut ainsi faire une sauvegarde automatique de répertoires de plusieurs PC à partir d'une machine unix.
    4
    1. CORINNE
       
      j'aimerais bien l'avoir ton script
      0
    2. aubertin.marc Messages postés 1 Statut Membre > CORINNE
       
      envoie moi ton mail
      0
    3. Tof > aubertin.marc Messages postés 1 Statut Membre
       
      hello,
      Si c'est possible j'aimerais bien aussi l'avoir ce script...
      Adresse supprimée Modération CCM
      merci
      0
    4. Bernard
       
      Salut,
      Désirant à partir d'un PC Linux rapatrié régulièrement via FTP une arborescence d'un autre PC, j'aimerais bien, dans la mesure du possible, avoir ton script.
      Merci d'avance.
      Adresse supprimée Modération CCM
      Bernard
      0
    5. Dasky
       
      Salut, j'utilise LFTP, et je rencontre aussi le problème d'envoi de contenu de répertoire récurisivement... Je suis sous Mandrake 9.1, mode graphique KDE...
      Merci de m'envoyer le script... ça me ferait énormément plaisir.
      ---- > Adresse supprimée Modération CCM
      Ciao.
      Dasky
      0
  2. ScavengeR
     
    OK OK ... lol ! desolé pour le coup de bourre gt vener ce jour la puisque g cherché le moyen de faire des ftp en fonction du user et du password qui seraient ds des variables et ke je ne trouvais pas la syntaxe... c chose fait et tu me dit que g repondu sommairement ... ok ct de la recuperation et pas de l'envoi, mais je t'assure que by marche aussi bien que bye !!!

    enfin voici un script de recuperation de fichiers distants en fonction d'un user et password qu'on peu declarer en variable:

    avec comme variables (entre [] = pas obligé)

    liste=/.../fichier_liste_des_machines.txt (liste séparée par des espaces ou des retours chariot)
    REPLOCAL=/.../repertoirelocal
    SOUSREP1=sousrepertoire1
    SOUSREP2=...
    ...
    [LOG=/.../fichierlog.log]
    USER=user
    PASSWORD=password

    # DEBUT ################
    for MACHINE in $liste
    do

    ftp -inv $MACHINE <<FINDETEXTE [>$LOG]
    user $USER $PASSWORD
    lcd $REPLOCAL
    cd $REPDISTANT
    mget *
    lcd $REPLOCAL/$SOUSREP1
    cd $REPDISTANT/$SOUSREP1
    mget *
    ...
    lcd $REPLOCAL/$SOUSREPn
    cd $REPDISTANT/$SOUSREPn
    mget *
    bye
    FINDETEXTE

    done
    ####################

    etc... ce n'est qu'un exemple, si vous avez des sous sous sous repertoires ca marche pareil, même principe... mais il y a mieux si vous avez beaucoup de sous repertoires : il faut faire une fonction "FTP_mget" par exemple, avec les user, pass, reps en parametres et faire la boucle en fonction des repertoires, et a chaque fois appeler la fonction FTP_mget, ca sera plus simple a gerer...
    mais est ce plus rapide ? j'en doute, car la procédure d'authentification prend du temps, et repetée beaucoup cela pourait faire baisser les perf grave...

    enfin voila o cas ou une fonction comme decrit ci dessus, qu'on appelerai avec des parametres dans l'ordre des declaration de variables interne, mais c pas obligé, on peut se contenter de declarer juste la machine et les repertoires si le user et le pass sont communs et declarés avant, a adapter !

    FTP_mget ()
    {
    MACHINE=$1
    USER=$2
    PASSWORD=$3
    REPLOCAL=$4
    REPDISTANT=$5
    ftp -inv $MACHINE <<FINDETEXTE
    user $USER $PASSWORD
    lcd $REPLOCAL
    cd $REPDISTANT
    mget *
    bye
    FINDETEXTE
    }

    explications sur les parametres du programme ftp:
    -i == mode interactif OFF == pas de question "telecharger ce fichier (O/N) ?" en cas de mget ou mput
    -n == n'utilise pas le .netrc
    -v == verbose, dans la log du ftp si vous l'utilisez il y aura des lignes commencant par un numero a 3 chiffres, comme des codes retours, ca vous permet par la suite de detecter des erreurs ds vos transferts, avec des grep dans le fichier de log, après chaque appel de la fonction FTP_mget par exemple...
    3
  3. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    Moi j'utilise dftp ou un truc du genre, j'essaierai de penser a regarder ca ce soir a moins que je retrouve ca sur le net... C'est pratique tu peux faire une copie de ce que tu as dans un repertoire...

    .  .
    \_/
    2
  4. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    http://lftp.yar.ru/lftp-man.html

    Hop, en fait ca s'appelle lftp, je ne sais pas il est peut etre installe ...
    Sinon ben ca doit etre faisable de faire le script en ftp pur mais relativement fastidieux quand meme j'en ai peur :-S

    .  .
    \_/
    2
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eric_fortique Messages postés 9 Statut Membre
     
    Salut tous ,

    Je veux le script ftp sous linux.
    ou idèe comment le programmer les fonctions nècessairre .
    C t'un projet qu'il me faux rendre d'ici une semaine .
    C urgent !!!

    Merci pour tout aides qui me sera apportè .
    2
  7. Elise78 Messages postés 77 Statut Membre 3
     
    Salut !

    Alors justement, je faisais un petit tour sur ce post cherchant désespéremment une réponse à mon prblème de la meme acabie et oh rage, oh désespoir quand j'arrive à la fin et remarque qu'il n'y à que partiellement la réponse ... :-( Vraiment dommage.

    Alors si quelqu'un par hasard, à le code et veut bien le faire partager aux autres ca me serait bien utile. Ma requête se tourne en premier vers l'auteur du code en question. ;-)

    Merci d'avance. Elise78 :-p

    PS : mon adresse mail au cas ou : mannon78_At_hotmail.com
    2
    1. scavenger
       
      salut elise,

      comment ca que partiellement la reponse ???? tu cherche quoi exactement ???

      cdlt,
      0
    2. Elise78 Messages postés 77 Statut Membre 3 > scavenger
       
      Salut scavenger !!

      Pour etre plus precise je cherche la possibilite de faire une connexion telnet dans un script shell bash. Mais apparemment ca a l'air infaisable. Ou bien personne ne sait faire :-p . Sinon, j'ai eu le temps de faire mon propre script pour aller copier un repertoire complet d'un serveur distant par ftp. C'est pas hyper bien codé avec des niveaux d'arborescence et tout mais ca marche bien, il faut juste que je verifie si les fichiers repondant au motif .* sont pris en compte.
      Ce qui fait que je ne le trouve pas parfait c'est que je suis obligee d'aller a l'aide d'un telnet (le meme que je voulais automatiser) creer le fichier de l'arborescence qui va etre recupere par mon script et qui va servir pour recuperer l'arborescence complete sur le poste cible.
      Dasn la version quasi finale de mon script j'ai 9 parametres <serveurdist> <login> <passwd> <deb_arbo_serveur> <deb_arbo_client> <proprio> <groupe> <option> (et y'en aurait deux ou trois en travaux)
      Ce qui correspond à : je voudrais me connecter a $serveurdist avec mon $login et mon $passwd pour recuperer le repertoire qui est a $deb_arbo_serveur et le mettre dans le repertoire deb_arbo_client ce repertoire devra etre la propriete de $proprio et du groupe $groupe, sans oublier que je voudrais que les données soient recuperees en mode $option (ascii ou binary) ... etc

      Cordialement, Melle Elise78
      0
    3. ScavengeR > Elise78 Messages postés 77 Statut Membre
       
      salut elise,

      mon email est Adresse supprimée Modération CCM au cas ou...

      apparemment d'apres ce que je comprend, tu ne connais pas l'arbo distante, c pourquoi tu veux du telnet automatisé pour la récupérer et t'en servir dans ton ftp... c ca ????
      saches que du telnet automatisé je ne sais pas si ca marche g jamais essayé, mais suivant le même principe de l'envoi de commandes avec la redirection shell comme j'ai montré dans mes exemples, ca devra
      0
    4. ScavengeR > Elise78 Messages postés 77 Statut Membre
       
      (.....) ca devrait peut etre marcher ??

      genre
      telnet $machine <<EOF
      commandes...
      EOF

      sinon tu as essayé le rsh ? ca marche bien ca !

      n'hésite a insister si g tjs pas compris LOL !!!

      aller a plus amuse toi bien !!

      scavenger
      0
    5. Elise78 Messages postés 77 Statut Membre 3 > Elise78 Messages postés 77 Statut Membre
       
      Salut ScavengeR !!

      Il me semble que tu as tout compris.

      Le truc c'est que je suis hyper feignante et que je n'aime pas faire ne serait-ce 10 fois la même manip fastidieuse (et surtout j'ai peur d'oublier quelque chose). Et c'est dans ces moments la ou je me sens bien avec l'informatique lol

      Je voudrais que ce script marche pour le plus le cas possible sans pour autant faire un applicatif graphique  … par exemple je récupère ce script et j'arrive a le faire tourner sur mon poste personnel …

      Effectivement je cherche un truc du style :

      telnet $machine <<EOF
      commandes...
      EOF

      ou

      par une commande que je peux lancer par ftp
      parce que je ne peux pas créer mon fichier
      arbo_serveurdist.txt par le ftp (avec la commande
      find . –type d echo{} \; >> arbo_serveurdist.txt

      Je m'amuse comme une folle lol !!!
      0
  8. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    oui ce genre de script existe.
    J'en ai vu en perl, en Python...
    1
    1. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
       
      oui certainement dans ces langages, c'est vrai.
      Moi, je pensais au shell "classique" (*sh). Il me semble que ce n'est pas possible avec celui-ci

      @++
      Poster, poster encore et toujours :-)
      0
  9. Doudou
     
    Désirant à partir d'un PC Linux rapatrié régulièrement via FTP une des fichiers d'un autre PC, j'aimerais bien, dans la mesure du possible, avoir ton script.
    Merci d'avance.
    Adresse supprimée Modération CCM
    1
  10. Greg
     
    J'aimerais bien aussi l'avoir
    si ca te gene pas
    mon mail c Adresse supprimée Modération CCM
    Merci
    1
  11. aubertin
     
    la modestie ne t'étouffe pas, mais si tu lisais bien les demandes tu n'y réponds que très sommairement

    en premier ton script ne focntionnera pas avec "by" au lieu de "Bye" c'est un détail !!
    par contre entièrement d'accord sur l'astuce

    et puis c'est plutot "binary" et "mget" pour récupérer des fichiers

    il n'est pas récursif
    ton astuce de déclarer dans .netrc fait que ton script ne fonctionne qu'à partir d'un client connu.

    pour ceux qui sont intéressé je peux leur envoyer un script complet
    utilisé par un serveur unix qui sauvegardait toutes les nuits des répertoires complet de 30 à 50 PC (il faut installé un serveur ftp sur le poste ex logiciel war-ftpd)
    voir mon premier message
    1
  12. aubertin
     
    laisse moi ton email et je t'envoie mon script avec une fonction récursive, (le programme gère tout seul la profondeur d'un répertoire) testé et utilisé entre un serveur unix et des PC sur un réseau WAN ayant un service ftp installlé (logiciel warftpd)
    1
    1. Rakotoson
       
      Je veux recevoir le script unix pour ftp recursif
      remerciements
      0
  13. eric_fortique Messages postés 9 Statut Membre
     
    Mon e-mail : Adresse supprimée Modération CCM
    Merci aubertin pour votre aide .
    1
  14. eric_fortique Messages postés 9 Statut Membre
     
    Merci aubertin ,
    j'essayerai de comprendre ton script,
    il me parait tres difficile.
    1
  15. ScavengeR
     
    ben c sympa.... d'en faire profiter les autres... ca me donbne envie d'effacer mon post tiens :)
    1
  16. sam
     
    ce script m'intéresse.
    c'est possible de l'avoir??
    Adresse supprimée Modération CCM
    1
  17. scavenger
     
    bonjour SAM,

    mais que veux tu en fait ? perso g mis les infos qu'il fallait pour le script en question, et sinon aubertin a fait un autre script apparemment plus compliqué, donc je vois pas trop ... ca ne te suffit pas ce que j'ai mis ??? demande a aubertin si c pas suffisant ou réexplique toi :)

    cdlt,
    scavenger
    1
  18. Harry-Co
     
    En effet, pourquoi ne pas mettre en ligne ce script ?
    C'est pas du GNU/GPL ???
    Mdr
    1
  19. raphael
     
    bonjour, je serai interresé par le script ftp récursif sous linux.
    serait il possible de me l'envoyer à cette adresse Adresse supprimée Modération CCM
    merci d'avance
    1
  20. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    Je crois que cette question a malheureusement déjà été posée... :
    On ne peut pas car ftp ne prend pas le mot de passe en option...

    @++
    Poster, poster encore et toujours :-)
    -1
  21. ScavengeR
     
    pfff trop facile:

    ftp -v machine <<FINLE
    prompt
    [type ascii]
    [lcd repertoirelocal]
    cd repertoiredistant
    mput *
    by
    FINLE

    et voila !!!!!!!!!!!!!!!!!!!!!
    c tout naze, et ca suppose que le user qui envoi les fichiers est déclaré dans le .netrc de son répertoire home sinon on vous demandera un mot de passe et un user

    ==> ligne à rajouter dans le .netrc pour cofigurer un pass et un login automatique en rlogin ou en ftp:
    machine xxxxx login yyyy password zzzzz
    -1