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

Linux Discussion :

télécharger un fichier de plusieur serveur FTP


Sujet :

Linux

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut télécharger un fichier de plusieur serveur FTP
    Comment Rapatrier des fichiers log de plusieurs serveur FTP en temps réel a l’aide d’un scripte Shell .j’ai essayer de rapatrier un seul fichier a partir d’un seul serveur mais comment faire pour plusieurs serveurs en même temps et en temps réel ? Chaque « X »seconde .
    sachant que les serveurs FTP sont sous Windows NT 2000.
    Aider moi svp.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mina3prog Voir le message
    Comment Rapatrier des fichiers log de plusieurs serveur FTP en temps réel a l’aide d’un scripte Shell .j’ai essayer de rapatrier un seul fichier a partir d’un seul serveur mais comment faire pour plusieurs serveurs en même temps et en temps réel ? Chaque « X »seconde .
    Un truc de ce genre
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/sh
    function recup()
    {
        ftp $1 <<_EOT_
        user
        password
        bin
        prompt off
        get $2
        bye
        _EOT_
    }
     
    while true
    do
        recup serveur1 fichier1 &
        recup serveur2 fichier2 &
        recup serveur3 fichier3 &
        wait
        sleep X
    done

    Le wait sert à attendre la fin de tous les processus lancés en arrière plan afin qu'au tour de boucle suivant, ils repartent en même temps.

    Citation Envoyé par mina3prog Voir le message
    sachant que les serveurs FTP sont sous Windows NT 2000.
    Ca n'a aucune espèce d'importance

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci pour votre aide ,mais j'ai eu un problème puisque le user et le mot de passe change d'un serveur a l'autre et le fichier a télécharger et toujours le même . donc j'ai modifier le code mais ca marche pas pouvez vous m 'aider SVP voila le code :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/bin/sh
    function recup()
    {
     
            ftp $1 <<_EOT_
            user$2 
            pasword $3
            bin
            prompt off
            get A.txt
            bye
            _EOT_
     
    }
     
    while true
     
    do 
       recup 192.168.0.22  DataCard1 311722 &
       recup 192.168.0.32  DataCard2 258333 &
       recup 192.168.0.57  DataCard3 985555 &
     
       wait
     
       sleep 6
     
    done

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mina3prog Voir le message
    merci pour votre aide ,mais j'ai eu un problème puisque le user et le mot de passe change d'un serveur a l'autre et le fichier a télécharger et toujours le même . donc j'ai modifier le code mais ca marche pas pouvez vous m 'aider SVP voila le code :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/bin/sh
    function recup()
    {
     
            ftp $1 <<_EOT_
            user$2 
            pasword $3
            bin
            prompt off
            get A.txt
            bye
            _EOT_
     
    }
     
    while true
     
    do 
       recup 192.168.0.22  DataCard1 311722 &
       recup 192.168.0.32  DataCard2 258333 &
       recup 192.168.0.57  DataCard3 985555 &
     
       wait
     
       sleep 6
     
    done
    Oui, ça ne marche pas parce que la syntaxe du user est un peu particulière. Il faut demander ftp -n pour qu'il ne pose pas la question et lui envoyer toi-même l'instruction en mettant le user et le password sur une seule ligne

    Accessoirement, le fichier "A.txt" étant un fichier texte, faut pas te mettre en mode binary !!!

    Citation Envoyé par mina3prog Voir le message
    ...et le fichier a télécharger et toujours le même
    Hum... tu sens pas qu'il y aura comme une grosse collision à l'arrivée ??? Faut gérer aussi l'emplacement de réception !!!

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/bin/sh
    function recup()
    {
            ftp -n $1 <<_EOT_
            user $2 $3
            lcd $4
            prompt off
            ascii
            get A.txt
            bye
    _EOT_    # Impératif en début de ligne car c'est la chaine attendue telle quelle...
    }
     
    mkdir dir1 dir2 dir3
    while true
    do 
       recup 192.168.0.22  DataCard1 311722 dir1 &
       recup 192.168.0.32  DataCard2 258333 dir2 &
       recup 192.168.0.57  DataCard3 985555 dir3 &
     
       wait
     
       sleep 6
    done

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    bonjour ,


    Pour exécuter ce scripte Shell sous Windows il faux utilisé un outil j'ai télécharger un outil qui permet ça « Cygwin »
    cette outil ne reconnait pas les fichiers générés par WordPad j’ai trouvé cette commande qui permet de convertir le fichier contenant le script
    dos2unix <fichier qui contient le script>
    j'ai lancé une commande pour exécuter ce script mais il m’affiche une erreur sur la dernier ligne du scripte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    line 25 : syntax error :unexpected end of file.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mina3prog Voir le message
    Pour exécuter ce scripte Shell sous Windows il faux utilisé un outil
    Super. Ton premier topic parle de script shell. N'importe quel programmeur normalement constitué en conclura que tu bosses sous Unix/Linux. Eh non. au final il s'avère que tu bosses sous Windows et que tu vas maintenant devoir passer par un outil intermédaire pour exécuter un script fait pour Unix. Pouvais pas le dire dès le départ ? Il y a des langages aussi souples que le shell qui fonctionnent sous Windows et qui te permettent de faire la même chose !!!

    Citation Envoyé par mina3prog Voir le message
    j'ai télécharger un outil qui permet ça « Cygwin »
    Oui, cygwin est assez connu. Tu peux aussi télécharger VirtualBox. Ca te simule un (ou plusieurs) ordinateur complet. Tu lui crées un disque, tu installes sur cet ordinateur simulé un système d'exploitation (au hasard: linux) à partir des cd de ce système. Bref tu te retrouves avec un vrai Linux que tu peux lancer pour tes tests au lieu de passer par un ersatz...

    Citation Envoyé par mina3prog Voir le message
    cette outil ne reconnait pas les fichiers générés par WordPad j’ai trouvé cette commande qui permet de convertir le fichier contenant le script
    dos2unix <fichier qui contient le script>
    j'ai lancé une commande pour exécuter ce script mais il m’affiche une erreur sur la dernier ligne du scripte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    line 25 : syntax error :unexpected end of file.
    Oui, c'est le commentaire situé après "_EOT_". Vire-le et le script sera correct.

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    j'ai enlevé le commentaire mais le code ne s'exécute pas toujours la méme erreur qui s'affiche j'ai même glissé un echo pour voir dans quel parti y a un problème mais ca marche pas
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/bin/sh
    function recup()
    {
            ftp -n $1 <<_EOT_
            user $2 $3
            lcd $4
            prompt off
            ascii
            get A.txt
            bye
            _EOT_
    }
     
    echo test
     
    mkdir 192.168.0.22 192.168.0.32 192.168.0.57
     
    while true
     
    do 
       recup 192.168.0.22  DataCard1 311722 192.168.0.22 &
       recup 192.168.0.32  DataCard2 258333 192.168.0.32 &
       recup 192.168.0.57  DataCard3 985555 192.168.0.57 &
     
       wait
     
      sleep 6
     
    done
    mon projet consiste a développez une application de supervision sous Windows qui récupère des fichier log chaque" X "seconde et en même temps a partir de plusieurs serveur j'ai fais des recherche et j'ai trouvé que c'est possible pour un seul serveur avec un fichier .bat qui fait appelle a un simple script shell dans fichier .txt . et je savez pas comment le fair pour plusieurs serveur c'est pour ca que je cherché un script shell , si il y a d'autre langage plus souple veuillez m'orienter SVP est désolé j'ai mal interprété mon problème.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 726
    Points : 31 046
    Points
    31 046
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mina3prog Voir le message
    j'ai enlevé le commentaire mais le code ne s'exécute pas toujours la méme erreur qui s'affiche j'ai même glissé un echo pour voir dans quel parti y a un problème mais ca marche pas
    Et l'erreur qui s'affiche ??? Parce que sur mon vrai Linux, ce code fonctionne. Maintenant tu devrais quand-même être capable de débugguer. Tu commences par taper toi-même le ftp pour voir si les commandes passent. Ensuite au lieu de mettre 3 appels tu en mets qu'un seul et tu vois si ça passe etc.

    Citation Envoyé par mina3prog Voir le message
    mon projet consiste a développez une application de supervision sous Windows
    Ok. donc déjà si t'étais allée dans la section Windows t'aurais eu des pros Windows pour te répondre...

    Citation Envoyé par mina3prog Voir le message
    qui récupère des fichier log chaque" X "seconde et en même temps a partir de plusieurs serveur
    Donc apparemment ce n'est pas le même fichier de log qui se trouve sur les différents serveurs...
    Pourquoi il faut que ça se passe "en même temps" ? Parce que, que tu récupères 3 fichiers l'un après l'autre ou 3 fichiers en même temps, mis à part que ça triple la charge réseau, ça ne fait aucune différence...

    Citation Envoyé par mina3prog Voir le message
    j'ai fais des recherche et j'ai trouvé que c'est possible pour un seul serveur avec un fichier .bat qui fait appelle a un simple script shell dans fichier .txt .
    et je savez pas comment le fair pour plusieurs serveur
    Ben t'aurais pu faire plusieurs scripts distincts
    Il semblerait, en lisant ton énoncé, que rien ne soit commun. Tu as plusieurs serveurs distincts, chacun contenant un fichier log distinct. Pourquoi faire alors un script commun ?


    Citation Envoyé par mina3prog Voir le message
    c'est pour ca que je cherché un script shell , si il y a d'autre langage plus souple veuillez m'orienter SVP est désolé j'ai mal interprété mon problème.
    T'as par exemple Python. Langage natif sous Linux et porté aussi sous Windows
    Tu commences par télécharger et installer ce programme http://www.python.org/ftp/python/2.5.4/python-2.5.4.msi

    Puis tu testes ce script...
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import ftplib
    import os
     
    def get(host, login, passwd, fichier, dir):
            ftp=ftplib.FTP(host, login, passwd)
            ftp.retrbinary(
                    "RETR %s" % fichier,
                    open("%s/%s" % (dir, fichier), "wb").write,
            )
            ftp.close()
    # get
     
    os.mkdir("dir1")
    os.mkdir("dir2")
    os.mkdir("dir3")
    get("192.168.0.22", "DataCard1", "311722", "A.txt", "dir1")
    get("192.168.0.32", "DataCard2", "258333", "A.txt", "dir2")
    get("192.168.0.57", "DataCard3", "985555", "A.txt", "dir3")
    ... que tu écris dans un fichier "toto.py" qui deviendra alors directement exécutable.

    Plus de détails sur ftplib ici:http://docs.python.org/library/ftplib.html

    Et si le script te convainc de te mettre à Python, télécharge alors à partir des cours et tutoriels Python l’excellent bouquin de Swinnen : Apprendre à programmer avec Python 3 par Gérard Swinnen.

Discussions similaires

  1. [FTP] Télécharger un fichier sur le serveur
    Par djflex68 dans le forum Langage
    Réponses: 1
    Dernier message: 21/01/2008, 21h08
  2. Réponses: 3
    Dernier message: 21/08/2007, 16h24
  3. [FTP] Télécharger un fichier depuis un serveur FTP
    Par bremer dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2007, 11h27
  4. [FTP] Test de l'existence d'un fichier sur un serveur ftp
    Par lapartdombre dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 01/08/2005, 14h13

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