FTP vers plusieurs machine

Fermé
stefff13 - 22 sept. 2008 à 17:54
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 23 sept. 2008 à 20:51
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
A voir également:

5 réponses

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
Je peux être sous unix
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
22 sept. 2008 à 23:03
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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
23 sept. 2008 à 14:17
Ah mais tu es sous linux ou pas ?
-1

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

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
23 sept. 2008 à 20:51
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