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 :

Session telnet et méthodes


Sujet :

Python

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut Session telnet et méthodes
    Bonsoir,

    Je travaille actuellement sur une IHM devant se connecter par telnet à une machine distante.
    Je souhaite ouvrir une session telnet et lui envoyer des commandes en fonction des actions qu'effectue l'utilisateur.

    Voici le code d'ouverture de ma session telnet :
    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
    class ModTelnet(MXComm):
        def __init__(self):
            MXComm.__init__(self)
     
     
        def _connect(self):
            #connect to telnet session @ localhost port 4444
            try:
                HOST = "localhost"
                port = "4444"
                tn = telnetlib.Telnet(HOST, port)
            except:
                print "Connection refused"
     
     
        def _receive(self):
            #receive data (= msg) from stdout
            try:
                data = tn.read_all()
                return data
            except tn.eof.ERR as ex:
                if 'timeout error' not in ex.args[0]:
                    print 'Connection error:', ex 
                    raise Disconnected()
     
        def _send(self, data):
            #send command to telnet session
            try:  
                tn.write(data + "\n")
            except tn.socket.error as ex:
                if 'timeout error' not in ex.args[0]:
                    print 'Connection error:', ex 
                    raise Disconnected()
    Comment faire en sorte que ma session telnet soit accessible depuis mes méthodes receive et send sans que cela me génère l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NameError: global name 'tn' is not defined
    Vous remerciant d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 33
    Par défaut
    Bonsoir,

    Pourquoi n'utilise tu pas ta connection en tant qu'attribut de ta classe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class ModTelnet(MXComm):
        def __init__(self):
            MXComm.__init__(self)
            self.host = "localhost"
            self.port = 4444      
            self.connection = _connect()  
     
        def _connect(self):
            #connect to telnet session @ localhost port 4444
            try:
                return telnetlib.Telnet(self.host, self.port)
            except:
                print "Connection refused"
    Je ne sais pas si c'est la meilleure solution, mais c'en est une.

  3. #3
    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
    Bonsoir,

    T’as juste oublié de rajouter self. devant tous tes tn

    En effet, puisque c’est un objet que tu veux pouvoir utiliser dans toutes tes fonctions de ta classe ModTelnet, il faut que tu l’assigne à ton instance de classe, dans ton init :

    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
    34
    class ModTelnet(MXComm):
        def __init__(self):
            MXComm.__init__(self)
            self.tn = None
     
     
        def _connect(self):
            #connect to telnet session @ localhost port 4444
            try:
                HOST = "localhost"
                port = "4444"
                self.tn = telnetlib.Telnet(HOST, port)
            except:
                print "Connection refused"
     
     
        def _receive(self):
            #receive data (= msg) from stdout
            try:
                data = self.tn.read_all()
                return data
            except self.tn.eof.ERR as ex:
                if 'timeout error' not in ex.args[0]:
                    print 'Connection error:', ex 
                    raise Disconnected()
     
        def _send(self, data):
            #send command to telnet session
            try:  
                self.tn.write(data + "\n")
            except self.tn.socket.error as ex:
                if 'timeout error' not in ex.args[0]:
                    print 'Connection error:', ex 
                    raise Disconnected()
    Tout simplement !

    [EDIT] Carbonisé par ziranium

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut
    Erf, c'étais sa !

    J'ai tellement le nez dans mon code que j'en oublie de revenir aux choses simple !

    Merci pour vos réponses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Session : Par quelle méthode ?
    Par Are-no dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2008, 15h37
  2. Ouvrir une session telnet
    Par numostro dans le forum Administration
    Réponses: 2
    Dernier message: 29/12/2006, 10h12
  3. Initier une session telnet dans une session telnet
    Par benbs dans le forum Modules
    Réponses: 3
    Dernier message: 18/11/2006, 13h05
  4. Lancer une session telnet automatiquement
    Par Pragmateek dans le forum Windows
    Réponses: 2
    Dernier message: 23/05/2006, 16h37
  5. [Sécurité] session telnet via php
    Par winnie82 dans le forum Langage
    Réponses: 14
    Dernier message: 28/03/2006, 09h23

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