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

Réseau/Web Python Discussion :

ftplib + freebox V6 et HDD externe [Python 2.X]


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut ftplib + freebox V6 et HDD externe
    Salut à tous !
    Cela fait bien longtemps que je n'ai pas posté sur ce forum. Il était tant que je m'y remette ^^

    Je suis étudiant en master informatique, et fan de sport en tout genre. J'ai donc une petite "go pro x+ hero machin" et des centaines de Go de photo et vidéo (déjà trier ). Toutes ces donnée, vous l'imaginez bien, j'ai pas trop envie de le perdre et je les sauvegarde régulièrement sur un disque dur externe de 2 To de ma freebox v6. De cette façon je peut vider mes cartes mémoires directement chez moi depuis n'importe où dans le monde. Dans ma famille on prend beaucoup de photo, mais il n'y que moi qui les sauvegardes sur ma box. Un jour mon frère c'est fait cambrioler et à perdu près de 10 ans de photo stocké dans son ordinateur, C'est pour ça que j'ai décider de faire un petit script python qui fonctionne en tant que service windows pour automatiser cette sauvegarde sur les ordinateurs de chaque membre de ma famille. bref voici pour le contexte

    Le problème et le suivant :
    normalement la fonction ftp.dir("pathToDirectory") renvoi un liste de chaine de caractère sous la même forme que la commande "ls -l" sous linux. Sous cette forme donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    -rwxrwxrwx   1  freebox  freebox  2937056 Jan 02 13:58 P1100003.JPG
    -rwxrwxrwx   1  freebox  freebox  2957483 Jan 02 13:58 P1100004.JPG
    -rwxrwxrwx   1  freebox  freebox  3542409 Jan 02 13:58 P1100005.JPG
    ...
    mais bizarrement, au milieu de cette commande le résultat change de forme. Je me retrouve juste avec un chemin d'accès absolue vers le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    -rwxrwxrwx   1  freebox  freebox  3692537 Jan 02 14:02 P1100562.JPG
    -rwxrwxrwx   1  freebox  freebox  3887597 Jan 02 14:02 P1100563.JPG
    -rwxrwxrwx   1  freebox  freebox  3620864 Jan 02 14:02 P1100564.JPG
    /Backup salinie/rezuz/Images/Bolivie_2010/DCIM/110_PANA//P1100565.JPG   # <--- changement de format en plein milieu
    /Backup salinie/rezuz/Images/Bolivie_2010/DCIM/110_PANA//P1100566.JPG
    /Backup salinie/rezuz/Images/Bolivie_2010/DCIM/110_PANA//P1100567.JPG
    Je peut poster l'ensemble du code si vous le voulez mais comme il est plutôt long je préfère mettre un tout petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import ftplib
     
    ftp = ftplib.FTP("adresse ip freebox", "login", "mdp")
    ftp.cwd("dossier qui m'interesse")
     
    print ftp.dir()  # affichage de la liste de fichier (et résultat bizarre)
    Pour l'instant j'ai comme solution de "sauter ces fichiers" puisque cela n'en concerne qu'une dizaine a la fin de chaque dossier. Mais c'est plutôt génant quand il s'agit de vidéo de plusieurs centaine de Mo et quand on parle de près de 50 dossiers. ça fait quand même dans les 500 fichiers non sauvegardé. Avez-vous déjà rencontrer un tel problème ? cela peut t'il venir de la bibliothèque ftplib ? ou de la freebox ? ou du HDD externe ? j'avous que je suis un peu perdu la

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    ftp.dir() équivaut à ftp.retrlines('LIST') qui se contente d'afficher les lignes que le serveur envoie.
    Le problème serait plutôt côté serveur FTP de la box.
    Et vous pourriez le confirmer en regardant ce que sort un autre client FTP.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut
    Je vois, je viens de faire un test avec FileZilla sur le dossier concerné et après la commande "LIST" j'ai les réponses suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    150 File Status OK
    226 Closing data connection
    J'ai poussé un peu plus loin et j'ai réussi a transférer ce dossier sans aucun soucis.
    Donc tout va bien de ce côté la, il semblerai que le serveur fonctionne bien. Il y a t'il un moyen de récupérer les réponses du serveur FTP avec la bibliothèque ftplib ? comme ça je pourrai faire une gestions des erreurs plus poussé.

    [edit] : J'ai trouvé comment faire pour récupérer les réponses du serveur. Il s'agit simplement du retour de la fonction. Et lorsqu'il y a une erreur, je vais gérer les erreur avec un try, catch. Cependant je ne vois toujours pas de solution pour ce problème de format qui change en plein milieu

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Etes vous sûr que Filezilla a bien expédié une commande LIST plutôt qu'une autre (comme NLST par exemple)?
    Normalement le log devrait vous dire la commande qui a été expédiée.
    note: le retour de la commande LIST étant du format que veut bien le serveur, pas facile d'en parser le retour de façon fiable dans un environnement hétérogène. C'est la raison pour laquelle un Filezilla préférera faire un MLSD qui retourne ces informations sous un format prédéfini pour autant que le serveur la supporte (ce qui est généralement le cas).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut
    oui, FileZilla expédie une commande "LIST" voici ce que je trouve dans les logs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Commande :	LIST
    Réponse :	150 File Status OK.
    Réponse :	226 Closing data connection.
    Statut :	Contenu du dossier affiché avec succès
    J'ai déjà pensé au format MLSD qui aurait juste parfait dans mon cas, mais il semblerai que le serveur ftp de la freebox ne connaisse pas cette commande :
    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
     
    #fonction utilisé
    reponse = f.retrlines("MLSD", callback)
     
    # erreur 
    Traceback (most recent call last):
      File "C:\Users\famille\Desktop\DIVERS LEO\BackupBox\windows - Copie\test.py", line 11, in <module>
        reponse = f.retrlines("MLSD", callback)
      File "C:\Python27\lib\ftplib.py", line 437, in retrlines
        conn = self.transfercmd(cmd)
      File "C:\Python27\lib\ftplib.py", line 376, in transfercmd
        return self.ntransfercmd(cmd, rest)[0]
      File "C:\Python27\lib\ftplib.py", line 339, in ntransfercmd
        resp = self.sendcmd(cmd)
      File "C:\Python27\lib\ftplib.py", line 249, in sendcmd
        return self.getresp()
      File "C:\Python27\lib\ftplib.py", line 224, in getresp
        raise error_perm, resp
    ftplib.error_perm: 500 Syntax error, command unrecognized.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Bizarre: soit Fillezilla reçoit les mêmes données que Python et les rend présentables, soit le serveur expédie des données différentes aux deux clients.
    Lorsqu'il se passe des choses aussi étranges, je sors l'analyseur de protocole (WireShark) pour examiner les messages échangés dans les deux cas.
    à vous de voir.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vista n'affiche plus mon HDD externe
    Par mehdi_oca dans le forum Windows Vista
    Réponses: 5
    Dernier message: 16/01/2008, 18h44
  2. Installer XP sur Vista sur HDD externe
    Par LePaladin dans le forum Installation
    Réponses: 2
    Dernier message: 25/10/2007, 01h56
  3. HDD Externe, plus de données?
    Par electrosat03 dans le forum Composants
    Réponses: 4
    Dernier message: 21/05/2007, 22h42
  4. Lecture/Ecriture sur HDD externe USB
    Par rems033 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 16/05/2007, 17h12

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