Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ouvrir un shell avec Python

Sorte de ssh inversé

    10 février 2011 à 12:19:03

    Bonjour,

    J'aimerais créer un ssh inverser, tout simplement pour ne pas demander aux amis que j'aide sur linux d'ouvrir un port de leur coté car cette tache est fastidieuse, voir impossible si ils utilisent des réseaux non paramétrable ( type FreeWifi )

    J'entends par ssh inversé, le fait que c'est le serveur (la personne à aider) qui va initialisé la connexion vers le client (la personne qui va aider) pour ne pas avoir à ouvrir de port coté personne à aider.
    Une fois la connexion établie ( protégé avec RSA ), le client doit pouvoir ouvrir un terminal chez le serveur et obtenir le même comportement qu'avec ssh

    Ma première idée était d'utiliser la commande su avec subprocess
    term = suprocess.Popen("su "+user,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    


    Mon premier problème est le fait que si python n'est pas lancé avec root, cette commande est ignoré et me dit que su ne peut être utilisé uniquement via un terminal

    Donc je lance python en root ( au final ce n'est pas plus mal car ça permet plus de sécurité coté serveur )

    Mais avec ça c'est un petit peu compliqué et pas très optimisé.

    Je peux utiliser cette instruction pour récupérer la sortie à intervalle régulier:
    out,err = term.communicate()
    


    Et celle ci pour lancer une commande:
    out,err = term.communicate(input=cmd)
    


    Mais régler tout cela pour avoir un fonctionnement pratique va être complexe, surtout pour les commande comme top qui renvoie une sortie qui s'actualise en quelques sorte, et là je ne vois vraiment pas comment faire.

    Avez vous d'autres idées ou même une autre solution ?

    Merci d'avance, Oly.
    • Partager sur Facebook
    • Partager sur Twitter

    Ouvrir un shell avec Python

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown