Hallo, ich versuche, eine einfache Verwaltungs-App zu schreiben, die mir Zugang zu Computern Shell Telnet telnet (dies ist nur Test für Python-Programmierung), wenn ich zu verbinden mein server dann habe ich nur schwarzen bildschirm im terminal (Windows telnet client) aber im protokoll meines programms gibt es die outpu form des subprozesses und es wird nicht gesendet an client ich habe auf Google nach vielen lösungen gesucht aber keiner von ihnen hat funktioniert Twisted richtig und Ergebnis war der gleicheEinfache administrative Anwendung in Python basierend auf Twisted hängt und sendet keine Daten
mein Server Code lib:
# -*- coding: utf-8 -*-
from subprocess import Popen, PIPE
from threading import Thread
from Queue import Queue # Python 2
from twisted.internet import reactor
from twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
import sys
log = 'log.tmp'
def reader(pipe, queue):
try:
with pipe:
for line in iter(pipe.readline, b''):
queue.put((pipe, line))
finally:
queue.put(None)
class Server(LineReceiver):
def connectionMade(self):
self.sendLine("Creating shell...")
self.shell = Popen("cmd.exe", stdout=PIPE, stderr=PIPE, bufsize=1, shell=True)
q = Queue()
Thread(target=reader, args=[self.shell.stdout, q]).start()
Thread(target=reader, args=[self.shell.stderr, q]).start()
for _ in xrange(2):
for pipe, line in iter(q.get, b''):
if pipe == self.shell.stdout:
sys.stdout.write(line)
else:
sys.stderr.write(line)
self.sendLine("Shell created!")
def lineReceived(self, line):
print line
#stdout_data = self.shell.communicate(line)[0]
self.sendLine(line)
if __name__ == "__main__":
ServerFactory = Factory.forProtocol(Server)
reactor.listenTCP(8123, ServerFactory) #@UndefinedVariable
reactor.run() #@UndefinedVariable