FTP vers plusieurs machine

stefff13 -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je souhaiterais à patir d'un PC récupérer un répertoire de sauvegarde de plusieurs machines ( un aprés l'autre )

sachant que sur chaque machine le répertoire porte le même nom
deplus sur chaque machine il faut entrer un login et un password

Quelqu'un pourrait-il me donner un coup de main

Merci
Stéphane
Configuration: Windows XP
Windows Vista
Firefox 3.0.1

5 réponses

  1. STEFFF13
     
    Bonjour mamiemando

    Tu as totalement identifié ce dont j'ai besoin
    étant une bille en informatique, aurais tu la stucture en unix ?

    Merci encore pour ton aide
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Il faut que tu lises un fichier qui indique à chaque ligne une IP sur laquelle se connecter en ftp.
    Ouvrir un fichier de log en écriture
    Pour chaque IP
      Si la connexion échoue
        Noter que IP n'est pas joignable dans le fichier de log
        continue
      Fin si
      Cherche le répertoire à sauvegarder sur la machine distante
      Si ce répertoire n'existe pas
        Noter que IP ne possède pas de répertoire à sauver dans le fichier de log
        continue
      Fin si
      Créer un répertoire portant la date actuelle
      Créer dedans un sous répertoire portant pour nom l'IP de la machine
      Télécharger les fichiers à sauver dedans
    Fin si
    Fermer le fichier de log
    

    Je ne peux pas te donner plus que la structure du code car en ce qui me concerne je suis sous linux et je l'écrirais en shell ou en python. Dans ton cas c'est peut être faisable en "batch" (les commandes msdos windows) mais je ne connais pas assez pour te guider. Sinon tu peux essayer avec un langage genre python. Exemple :

    http://www.commentcamarche.net/forum/affich 73041 python ftp programme

    Dans ton cas il faudra adapter cette exemple car c'est un PC qui collecte les sauvegardes auprès des différents poste (ce qui est mieux d'un point de vue maintenance que le contraire si lesdits poste ne coupent pas ftp, chose que tu pourras aisément vérifier via ton fichier de log). Je t'invite à lire quelques tutoriels en python, tu verras c'est assez simple et je pense que c'est bien adapté pour résoudre ton problème.

    Bonne chance
    -1
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Ah mais tu es sous linux ou pas ?
    -1
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Alors plutôt que de faire du ftp le top du top ce serait de faire du ssh et ce sera plus facile à coder et sécurisé.

    Installe un serveur ssh (par exempl openssh-server) sur chaque poste client. Dans ton cas on remplace donc juste "serveur ftp" par "serveur ssh". Crée sur chaque poste un compte (par exemple admin) avec un mot de passe qui va bien.

    Par abus de langage j'appelle clients les postes qui ont des données à sauver (alors qu'en toute rigueur ce sont des serveurs mais bon flemme de renommer mes variables).

    Je ferais un truc du genre :
    #!/bin/sh
    # Le fichier qui stocke pour chaque ligne l'IP d'un poste
    clients="clients.conf"
    # Le répertoire dans lequel je vais stocker toutes les sauvegardes
    root_dir="./sauvegardes"
    # Le sous-répertoire dans lequel je vais stocker toutes les sauvegardes du jour
    date=`date +%d-%m-%Y`
    # Le fichier contenant les logs du jour
    log_file="save_${date}.log"
    # Le répertoire qui contient les fichiers à sauver sur chacun des postes
    save_dir="repertoire_a_sauver"
    # Le login que tu utilises pour te connecter sur chaque poste. Il faudra que tu crées ce compte
    login="admin"
    
    for client in $(<$clients)
    do
        # Le sous-répertoire dans lequel je vais stocker toutes les sauvegardes du jour de ce pc
        target_dir="${root_directory}/${date}/${client}"
        mkdir -p $target_dir
        echo "Downloading file from ${client} into ${target_dir}"
        cmd="scp -r ${login}@${client}:${save_dir} ${target_dir}"
        $cmd > ${log_file}
    done
    
    Puis un système de clés ssh pour éviter de taper le mot de passe pour chaque compte du type admin@ip_client.

    Bonne chance
    -1