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 :

connection en ssh


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 connection en ssh
    Bonjour,

    J'aimerais savoir à quoi sert le module subprocess?

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Quel rapport avec ssh*?

    subprocess est simplement le nouveau module à utiliser quand tu veux lancer un programme depuis ton script python –*il remplace les os.popen, par ex. Doc: http://docs.python.org/py3k/library/...ule-subprocess

  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
    et bien je voudrais faire un script qui m'établisse une connexion en ssh vers un serveur en utilisant se subprocess....J'ai mon professeur qui nous a refilé un bout de programme mais je n'y comprend rien:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import sys
    import os
    from subprocess import *
     
    print "## subprocess call"
    status = call(["ssh", "localhost", "pwd"])
    print "status =", status
     
    print "## ssh + system using subprocess Popen"
    proc = Popen(["ssh", "localhost", "ls", "xxx"])
    status = os.waitpid(proc.pid, 0)[1]
    print "status =", status
     
    print "## ssh + system using subprocess Popen"
    proc = Popen(["ssh", "localhost", "echo", "${PATH}"])
    status = os.waitpid(proc.pid, 0)[1]
    print "status =", status
     
    print "## ssh + system in shell using subprocess Popen"
    proc = Popen("ssh" + " localhost" + " echo ${PATH}", shell=True)
    status = os.waitpid(proc.pid, 0)[1]
    print "status =", status
     
    print "## ssh + backquote using subprocess Popen"
    proc = Popen(["ssh", "localhost", "ls", "-l", "-d", "bin", "xxx"],
       stdout=PIPE, stderr=PIPE)
    data = proc.communicate()
    print "status =", proc.returncode
    print "# out: "
    print data[0],
    print "# err:"
    print data[1],
    print "# end"

  4. #4
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Ce code lance plusieurs fois de suite ssh, soit via call(), soit via la création d’un objet-processus Popen, qui viennent tous deux de subprocess.

    Puis il attend que le process se termine (call() est bloquantes, et sinon via os.waitpid(), ou subprocess.Popen.communicate()), et affiche son code de retour.

    Voilà, en gros… Je te conseille encore une fois vivement la doc de subprocess pour les détails (http://docs.python.org/py3k/library/...ule-subprocess) :p

    PS*: D’un point de vue pédagodique, il eut été préférable à mon humble avis de ne pas importer tout le contenu de subprocess dans l’espace local, ç’aurait été plus clair (en plus, ce n’est pas trop conseillé par les bonnes pratiques de Python, me semble-t-il…)*:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import sys
    import os
    import subprocess
     
    print "## subprocess call"
    status = subprocess.call(["ssh", "localhost", "pwd"])
    print "status =", status
     
    print "## ssh + system using subprocess Popen"
    proc = subprocess.Popen(["ssh", "localhost", "ls", "xxx"])
    status = os.waitpid(proc.pid, 0)[1]
    print "status =", status
     
    print "## ssh + system using subprocess Popen"
    proc = subprocess.Popen(["ssh", "localhost", "echo", "${PATH}"])
    status = os.waitpid(proc.pid, 0)[1]
    print "status =", status
     
    print "## ssh + system in shell using subprocess Popen"
    proc = subprocess.Popen("ssh" + " localhost" + " echo ${PATH}", shell=True)
    status = os.waitpid(proc.pid, 0)[1]
    print "status =", status
     
    print "## ssh + backquote using subprocess Popen"
    proc = subprocess.Popen(["ssh", "localhost", "ls", "-l", "-d", "bin", "xxx"],
                             stdout=PIPE, stderr=PIPE)
    data = proc.communicate()
    print "status =", proc.returncode
    print "# out: "
    print data[0],
    print "# err:"
    print data[1],
    print "# end"

  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
    bon j'ai essayé de lire la doc concernant le subprocess mais la seule chose que j'ai compris c'est qu'il permet d'appeller des commandes ou programmes externes mais je sais toujours pas comment accéder à un serveur à distance afin de copier des fichiers

  6. #6
    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
    bon je crois que j'ai trouvé la solution à mon probleme:

    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
    20
    21
    22
    23
    ########################
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # vim: set fileencoding=utf-8
     
    ########################
     
    import sys
    import os
    from subprocess import *
     
    path_file = "chemin du fichier voulu"
     
    print "## ssh + backquote using subprocess Popen"
    proc = Popen(["ssh", "localhost", "ls",path_file],
       stdout=PIPE, stderr=PIPE)
    data = proc.communicate()
    print "status =", proc.returncode
    print "# out: "
    print data[0],
    print "# err:"
    print data[1],
    print "# end"
    sauf que il y a plusieurs versions et j'aimerais récupérer la dernière version
    c'est pas facile tout ça

Discussions similaires

  1. Creer un script pour se connecter via SSH
    Par marouene_ dans le forum Linux
    Réponses: 2
    Dernier message: 26/03/2011, 19h15
  2. Impossible de se connecter en SSH
    Par SimoX1 dans le forum Administration système
    Réponses: 6
    Dernier message: 14/06/2010, 10h46
  3. Connection TelNet/SSh en VB
    Par jordane45 dans le forum VB.NET
    Réponses: 0
    Dernier message: 29/04/2010, 15h05
  4. Réponses: 18
    Dernier message: 20/08/2009, 10h09
  5. Réponses: 0
    Dernier message: 15/08/2007, 16h36

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