Problem mit telnetlib

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Mightymod
User
Beiträge: 2
Registriert: Samstag 23. Februar 2008, 19:05

Problem mit telnetlib

Beitragvon Mightymod » Samstag 23. Februar 2008, 19:13

Ich möchte mir ein kleines Verwaltungstool für Teamspeak2 schreiben, habe aber Probleme mich mit dem TS-Server zu verbinden.

Folgenden Code verwende ich:

Code: Alles auswählen

import telnetlib

HOST = "localhost"

tn = telnetlib.Telnet(HOST,51234)
tn.write("slogin admin admin\r\n")
print tn.read_all()
tn.close()



Leider hängt sich das Programm bei tn.read_all() dann auf und es kommt keine Ausgabe zurück.

Mit Wireshark habe ich dann mal mitgesnifft und alles sieht gut aus, das tn.write() wird ausgeführt und auch ein OK vom TS-Server zurückgegeben, aber tn.read_all() bekommt es nicht mit.

Was mache ich da falsch ?
BlackJack

Beitragvon BlackJack » Samstag 23. Februar 2008, 19:29

`read_all()` liesst AFAIK solange bis die Gegenseite die Verbindung schliesst. Das wird in diesem Fall "nie" passieren, weil die Verbindung ja steht und die Gegenseite auf weitere Daten wartet.
Mightymod
User
Beiträge: 2
Registriert: Samstag 23. Februar 2008, 19:05

Beitragvon Mightymod » Samstag 23. Februar 2008, 19:36

Das klingt logisch. Nur wie bekomme ich die Rückgabe von tn.write() nun in eine Variable ?

Code: Alles auswählen

ausgabe=tn.write("slogin admin admin\r\n")
 


Liefert ein OK oder FAILED zurück,was aber nicht in der Variablen ausgabe steht.
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

Beitragvon Frank aka Ch3ck3r » Samstag 23. Februar 2008, 22:09

ich hab auch grad (vor 4 min fertig geworden) etwas für ts gebastelt

Warum willst du über telnet gehen?
Nimm einfach sockets und connecte auf den ts

Ich kopiere dir mal meine Klasse, vielleicht kannst etwas damit anfangen

Code: Alles auswählen

import socket

class TS2(socket):
    def __init__(self,ip,port,timeout=5):
        self.address = (ip,port)
        socket.socket.__init__(self, socket.AF_INET, socket.SOCK_STREAM)
        self.settimeout(timeout)
        self.connect(self.address)
        self.recv(1024) #ts-begrüßung "[TS]\r\n"

    def sendcmd(self, command):
        self.send(str(command)+"\r\n")

    def getmessage(self):
        message = self.recv(1024)
        return message.replace("\r\n","\n")
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de

Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot]