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 :

Connexion SSH avec un serveur distant


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut Connexion SSH avec un serveur distant
    Bonjour,
    J'ai besoin d'écrire un script Python pour récupérer des infos sur un serveur. Les infos que j'ai besoin de récupérer sont pour la plupart des infos de base comme le nom du dossier/fichier, son chemin absolu et relatif ainsi que le partitionnement du disque. J'ai aussi besoin de récupérer certaines infos dans un fichier txt. Je ne peux pas télécharger ces fichiers afin de les parser car ils contiennent des infos confidentielles.

    J'ai un accès ssh au serveur via putty, j'ai donc fais quelques recherches sur le sujet, mais je ne vois pas du tout par ou commencer pour établir la connexion, ni même ou placer mon fichier sur mon serveur de dvp.
    Si vous avez des conseils sur des articles/cours ou d'autres sujets du meme type que je n'aurais pas trouvé, je vous en remercie beaucoup !

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par momortral Voir le message
    J'ai besoin d'écrire un script Python
    tu devrais le faire alors, et nous le montrer ensuite

    je ne vois pas du tout par ou commencer pour établir la connexion
    le module paramiko est tout indiqué, on trouve pleins d'exemples sur le net, c'est à mon avis une bonne idée de commencer par là

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut
    Apres des recherches sur le module paramiko, j'ai commencé mon script. J'arrive bien à me connecter.
    Pour éxécuter des instructions, je rencontre un "problème".

    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
     
    import os
    import paramiko
    from connexion import *
     
    def test():
        client = nouvelle_co()
        #stdin, stdout, stderr = client.exec_command("ls")
        command1 = "cd vegan"
        command2 = "ls"
        command = command1 + '\n' + command2
        stdin, stdout, stderr = client.exec_command(command)
        #stdin, stdout, stderr = client.exec_command(command2)
        for line in stdout.read().splitlines():
            print(line)
        client.close()
        return
    lorsque je me connecte, j'arrive dans le répertoire /projects, dans lequel se trouve plein de dossiers, dont vegan et j'ai besoin d'explorer ce dossier.
    si je fais ça (1):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    stdin, stdout, stderr = client.exec_command(command1)
    stdin, stdout, stderr = client.exec_command(command2)
    la réponse renvoyée est la liste des dossies dans /projects et non dans /vegan

    en testant ça (2):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    command1 = "cd vegan"
        command2 = "ls"
        command = command1 + '\n' + command2
        stdin, stdout, stderr = client.exec_command(command)
    j'ai la réponse que j'attendais, mais la syntaxe est déjà lourde pour les premiers dossiers, et j'ai une arborescence assez importante à parcourir.
    Est-il possible de changer le dossier de base ou s’exécute les commandes de sorte que ma première solution (1) puisse fonctionner?
    Je vais continuer de parcourir la doc paramiko en espérant trouver une réponse à ma question.

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    en bref,
    • tu pourrais très bien faire ls vegan/ en une seule commande
    • si vraiment tu tiens à passer plusieurs commandes tu peux très bien les chainer cd vegan/ ; ls ou cd vegan && ls etc.
    • on n'a aucune idée de ce que contient nouvelle_co(), difficile à dire si tu t'y prends de la bonne façon (mais si ça marche tant mieux)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    tu pourrais très bien faire ls vegan/ en une seule commande
    Je ne savais pas du tout

    Citation Envoyé par BufferBob Voir le message
    si vraiment tu tiens à passer plusieurs commandes tu peux très bien les chainer cd vegan/ ; ls ou cd vegan && ls etc.
    je dois explorer chaque fichier de l'arborescence, c'est la façon que j'avais imaginé en rajoutant des paramètres avec la profondeur de l'arbo. Il existe peut etre des solutions bien plus facile et optimisé, mais je ne les connait pas. Si tu as des conseils, je suis preneur.

    Citation Envoyé par BufferBob Voir le message
    on n'a aucune idée de ce que contient nouvelle_co(), difficile à dire si tu t'y prends de la bonne façon (mais si ça marche tant mieux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def nouvelle_co():
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect('***', username='***', password='***')
        return client

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par momortral Voir le message
    je dois explorer chaque fichier de l'arborescence
    ça veut pas dire grand chose. selon le traitement à effectuer sur chaque fichier ça peut s'envisager en 1 ligne qui s'exécutera entièrement sur le serveur ou au contraire nécessiter plusieurs commandes successives sur la même connexion ssh, mais en l'espèce ça n'est plus un problème de connaissances du langage Python, mais du shell/bash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def nouvelle_co():
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect('***', username='***', password='***')
        return client
    yep c'est le minimum, comme dit si ça marche tant mieux, à voir selon tes besoins finaux si c'est suffisant ou non

Discussions similaires

  1. Programme pour établir une connexion ssh avec un serveur sur unix
    Par sanaline dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 15/06/2011, 12h21
  2. [SQL2005] Log shipping avec 2 serveurs distants
    Par TThieuMa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/12/2007, 20h53
  3. Connexion SSH avec clefs privée/publique
    Par NikoBe dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 12/06/2007, 20h50
  4. Réponses: 2
    Dernier message: 16/01/2006, 11h38
  5. Connectivité avec des serveurs distants
    Par Ph. B. dans le forum XMLRAD
    Réponses: 8
    Dernier message: 07/02/2003, 13h16

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