IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Prendre fichiers sur un ftp en envoyer vers destination


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut Prendre fichiers sur un ftp en envoyer vers destination
    Bonjour,

    J'aurai une petite question concernant un script que je fais en bash. Je sais que je suis dans la partie perl mais je n'ai pas trouvé où mieux placer le sujet.

    Je souhaite me connecter sur un ftp, chercher le dernier fichier avec x ou y extension et envoyer mon fichier.x ou fichier.y vers un de mes serveurs.

    Sauf que là il se connecte bien sur mon ftp, mais il effectue ma recherche sur le serveur d'où je lance le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP
    echo " The FTP Connection is successful "
     
    VAR2=$(ls -t  *.tar | head -1)
    if  [ $VAR2 ] ; then
    	get $prendre du ftp $destination
    else 
    	echo "The file doesn't exist"
    fi
    D'ailleurs, comment faire dans le get pour prendre la source du ftp.
    Merci

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    En Perl via le module Net::FTP, tu peux te connecter à un serveur FTP et t'y promener, récupérer ou déposer un fichier.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Mon problème est que j'ai déjà terminé le script et que je ne souhaite pas le refaire en perl.
    En bash le mode lftp ne permet pas de poser des commandes directement?

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Ce n'est pas un forum Bash ici, si tu veux, je te bascule sur le forum Linux ?

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    je veux bien merci djibril

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    déjà ftp tu peux éviter de mêtre le password et le login dans le script.
    voir : .netrc

    ensuite pour scripter les commandes internes du ftp c'est pas la bonne méthode

    il te faudra faire plutôt quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ici tu es en shell
    lftp -i $FTP << EOF
    commande_interne_ftp1 #ici tu n'est pas dans un shell
    commande_interne_ftp2 #ici tu n'est pas dans un shell
    commande_interne_ftp3 #ici tu n'est pas dans un shell
    bye
    EOF
    #ici tu es de nouveau en shell

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Ok, je regarderai le .netrc
    Dans un premier temps je vais déjà essayer de faire marcher les commandes

    je fais donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP << EOF
    !ls -t  *.tar | head -1
    bye
    EOF
    Après si telle extension existe sur le ftp, je le transfère en local dans un dossier
    mais déjà le ls ne fonctionne même pas. J'ai essayé avec ! et sans ! et c'est pareil il ne trouve rien

    Ai-je oublié quelque chose?

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    J'ai trouvé l'erreur, j'avais un espace en trop entre -t et *
    Du coup il me liste tout

    Par contre, comment faire en sorte que ce qu'il me liste aille dans une variable pour qu'ensemble je dise

    Ca donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ls -t  *.tar | head -1 = variable1
    si variable1 existe alors
    get mon fichier
    sinon
    rien
    j'ai essayé ceci mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    VAR=$(ls -t *.tar | head -1)
     if  [ $VAR ] ; then
          get mon fichier tar
          else
                 rien
    fi

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VAR=$(lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP -e 'ls -t  *.tar | head -1;quit')
    echo ${VAR}
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  10. #10
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par princesse95 Voir le message
    J'ai trouvé l'erreur, j'avais un espace en trop entre -t et *
    Du coup il me liste tout

    Par contre, comment faire en sorte que ce qu'il me liste aille dans une variable pour qu'ensemble je dise

    Ca donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ls -t  *.tar | head -1 = variable1
    si variable1 existe alors
    get mon fichier
    sinon
    rien
    j'ai essayé ceci mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    VAR=$(ls -t *.tar | head -1)
     if  [ $VAR ] ; then
          get mon fichier tar
          else
                 rien
    fi
    tu es obligé de le faire en 2 passes if n'est pas une commande légale dans ftp

    les seules commandes FTP standard sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    !               debug           mdir            qc              send
    $               dir             mget            sendport        site
    account         disconnect      mkdir           put             size
    append          exit            mls             pwd             status
    ascii           form            mode            quit            struct
    bell            get             modtime         quote           system
    binary          glob            mput            recv            sunique
    bye             hash            newer           reget           tenex
    case            help            nmap            rstatus         tick
    cd              idle            nlist           rhelp           trace
    cdup            image           ntrans          rename          type
    chmod           lcd             open            reset           user
    close           ls              prompt          restart         umask
    cr              macdef          passive         rmdir           verbose
    delete          mdelete         proxy           runique         ?
    regardes la méthode indiquée par zipe31, qui réalise la première passe, et valorise la variable

  11. #11
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    La commande fonctionne bien. En revanche le if ne fonctionne pas. je ne savais pas que if n'était pas connu dans le mode ftp

    Quel est le moyen possible permettant de tester avant de faire un get? Parce que dans la liste des possibilités, je ne vois pas laquelle est possible.

    je ne vois pas comment tester sans un if

  12. #12
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    suffit de faire plusieurs passes
    au moins 1 pour récupérer les informations
    et au moins 1 pour faire le get

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .....................
    VAR=$(lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP -e 'ls -t  *.tar | head -1;quit')
    #traitements des variables
    if ......... $VAR........
    then
    ftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP << EOT
    get $FICHIER_TO_GET
    bye
    EOT
    else 
    .........................
    fi

  13. #13
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Tu peux me dire à quoi sert EOT?
    EOF liste les fichiers je crois

    Merci pour ton aide

  14. #14
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Par contre, il me sort une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    line 139: syntax error: unexpected end of file
    Sauf que j'ai pas de ligne 139 mon script s'arrête avant. J'ai lu qu'il s'agit surement d'un oubli mais comment le trouver

    C'est quand j'ai rajouté cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ARV=$(lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP -e 'ls -t  *.tar | head -1;quit')
    echo ${ARV}
    if [ -f $ARV ]; then
            lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP << EOT
            get $ARV $DESTINATION
            bye
            EOT
    else
           echo "NE RIEN FAIRE"
    fi
    Je suis désolé mais c'est mon premier script

  15. #15
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Pas d'indentation dans un

    <<EOF
    ...
    ...
    EOF

    ou alors il faut rajouter un tiret "<<-EOF" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ARV=$(lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP -e 'ls -t  *.tar | head -1;quit')
    echo ${ARV}
    if [ -f $ARV ]; then
            lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP <<-EOT
            get $ARV $DESTINATION
            bye
            EOT
    else
           echo "NE RIEN FAIRE"
    fi
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  16. #16
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Mon problème, c'est que j'ai toujours la même erreur et que je vois pas pourquoi.
    Depuis que j'ai rajouté ces lignes de code, mon script veut plus fonctionner

  17. #17
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Comme on est pas devin, sans voir ton script en entier difficile de t'aider
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  18. #18
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Oui c'est vrai. Alors pour isoler le problème j'ai passé tout le reste du script en commentaire. Le début fonctionne très bien puisqu'il me crée mes dossiers la connexion du ftp et le echo fonctionne

    Mais dès que je rajoute ceci, j'ai l'erreur de la ligne 139

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ARCH=$(lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP -e 'ls -t  *.tar | head -1;quit')
    echo ${ARCH}
    if [ -f $ARCH ]; then
            lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP <<EOT
            get $ARCH $DESTINATION/ARCH
            bye
            EOT
    else
           echo "PAS DE FICHIER"
    fi
    En isolant juste la première commande et le echo ça fonctionne très bien. Mais après en rajoutant le test du if et le get bim plantage..

  19. #19
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ARCH=$(lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP -e 'ls -t  *.tar | head -1;quit')
    echo ${ARCH}
    if [ -f $ARCH ]; then
           lftp -u $FTP_LOGIN,$FTP_PASSWORD ftp://$FTP -e "get ${ARCH} ${DESTINATION}/ARCH;quit"
    else
           echo "PAS DE FICHIER"
    fi
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  20. #20
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Cette fois il me dit :
    ligne 59
    ce qui correspond à la ligne du if

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [FTP] Uploader et renommer un fichier sur un FTP
    Par mickdu90 dans le forum Langage
    Réponses: 5
    Dernier message: 19/04/2006, 10h56
  2. Déposer un fichier sur un ftp
    Par sebclick dans le forum C
    Réponses: 2
    Dernier message: 19/01/2006, 16h26
  3. Réponses: 15
    Dernier message: 01/09/2005, 10h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. [] [Réseau] Transfert fichier sur un FTP
    Par CYFL dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/02/2003, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo