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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Points : 32
    Points
    32
    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 éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

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

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Points : 32
    Points
    32
    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 éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Points : 32
    Points
    32
    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 éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Points : 32
    Points
    32
    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 éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Points : 32
    Points
    32
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    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