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

Python Discussion :

Copie d'une arborescence à partir d'un serveur


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut Copie d'une arborescence à partir d'un serveur
    Bonjour à tous,

    J'aimerai arriver à copier un gros dossier (avec des sous dossiers à l'interieur) pour arriver à recréer l'arborescence sur un répertoire personnel....Seulement voila il y a pas mal de fichier qui ne me servent à rien.

    J'ai fait ce code qui me permet de copier un dossier vers mon répertoire personnel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    path = "chemin du répertoire à copier"
    source = "user@host:"+path
    destination = "/home/bibi/temp"
     
    proc = subprocess.Popen(['scp','-r', source, destination],
    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    proc.communicate()
    Quelqu'un à une idée plizzz

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    salut, je te suggère de voir du côté de paramiko.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    je ne comprend pas au juste ce que pourrait m'apporter ce module "paramiko" de plus par rapport à mon actuel pour le soucis que j'ai?

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    salut,

    tu as pu tirer cette conclusion en 11 minutes ? ou n'as tu même pas pris la peine de regarder ce que paramiko peut faire ?

    paramiko propose des objets qui encapsule une connexion ssh ou sftp. En sous-classant le client sftp, tu pourras alors arriver au traitement que tu veux faire.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    sisi je connais déja ce module j'ai déja fait des recherches et je dois dire que sa me semble plus compliqué d'utiliser paramiko que subprocess

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    arrives tu à utiliser subprocess à tes fins ?
    visiblement non. et pourtant tu considères que c'est plus facile

    toute nouvelle chose nécessite un apprentissage pour pouvoir ensuite gagner en efficacité :p

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    bien dis.....mais le fait que je ne sache pas résoudre mon probleme avec subprocess ne veut pas dire qu'il n'y a pas de solution et comme je suis novice dans la programmation réseau je voulais juste savoir si un moyen été possible

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    hehe

    si tu as un moyen de faire ce que tu veux en utilisant depuis ton shell scp, alors tu arriveras à une solution avec subprocess. C'est le cas par exemple si tu veux copier un répertoire complet (comme avec scp -r).

    si je te conseille paramiko et de sous classer la classe SFTPClient, c'est parce que j'ai eu à le faire pour résoudre le même soucis que toi, c'est à dire échanger des données contenues dans des répertoires entre deux machines en réseau.

    si les machines sont connectées en FTP également, tu peux regarder du côté de ftplib dans la librairie standard Python.

    ton problème est qu'il te faut exclure des fichiers et ou des répertoires de cette copie (j'imagine qu'ils ont un nom particulier, dans ce cas voir du côté de fnmatch dans la librairie standard)

    la solution vers laquelle j'ai convergé, peut être pas la meilleure, a été d'implémenté un walk (comme celui du module os) mais au travers du client sftp (ou ftp).

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    et si je définis des paths sa pourrai fonctionner non?

  10. #10
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    tu veux dire une liste de chemins à copier ? oui bien sûr. tu peux te créer une liste des chemins à copier et ensuite à les passer à scp via subprocess ou a SFTClient via paramiko.

    SFTPClient implémente des fonctions d'interrogation du serveur. Pour subprocess, tu va devoir passer par des:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@remotehost ls /path/que/tu/interroges
    pour récupérer la liste des fichiers, les filtrer dans ton programme, et ensuite lancer un scp sur l'ensemble des fichiers.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    le dossier sur le serveur à copier:

    /sw/utab/<librairie souhaité>/<version>/syp/toto.txt

    le répertoire ou copier:

    /trin/extract/<librairie>/syp/toto.txt

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    ok jvois merci je vais essayer cela

  13. #13
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    dans ce cas c'est relativement simple, tu peux récupérer la liste des librairies comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@remotehost ls /sw/utab
    ensuite tu lances une boucle pour chaque librairie pour récupérer les versions disponibles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@remotehost ls /sw/utab/<librairie>
    ensuite, pour chaque version disponible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scp user@remotehost /sw/utab/<librairie>/<version>/syp/toto.txt /trin/extract/<librairie>/<version>/syp/toto.txt

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/12/2013, 23h13
  2. [PHP 5.3] Créer une arborescence à partir de chemin
    Par FishNyx dans le forum Langage
    Réponses: 2
    Dernier message: 03/02/2011, 09h12
  3. Copie d'une table SQL d'un serveur à un autre
    Par Bes74 dans le forum Outils
    Réponses: 2
    Dernier message: 22/07/2010, 11h47
  4. Réponses: 2
    Dernier message: 10/07/2008, 15h14
  5. copie d'une arborescence avec excel vb
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2005, 08h31

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