【发布时间】:2013-06-29 04:26:55
【问题描述】:
我正在尝试运行 PTY 服务器的扭曲文档中的示例代码示例,该服务器在连接时生成一个 shell。
from twisted.internet import reactor, protocol
class FakeTelnet(protocol.Protocol):
commandToRun = ['/bin/sh'] # could have args too
dirToRunIn = '/tmp'
def connectionMade(self):
print 'connection made'
self.propro = ProcessProtocol(self)
reactor.spawnProcess(self.propro, self.commandToRun[0], self.commandToRun, {},
self.dirToRunIn, usePTY=1)
def dataReceived(self, data):
self.propro.transport.write(data)
def conectionLost(self, reason):
print 'connection lost'
self.propro.tranport.loseConnection()
class ProcessProtocol(protocol.ProcessProtocol):
def __init__(self, pr):
self.pr = pr
def outReceived(self, data):
self.pr.transport.write(data)
def processEnded(self, reason):
print 'protocol conection lost'
self.pr.transport.loseConnection()
f = protocol.Factory()
f.protocol = FakeTelnet
reactor.listenTCP(5823, f)
reactor.run()
此代码给出错误“Windows 不支持 usePTY 参数”。我希望有一种解决方法或任何可能有助于在 Windows 上运行它的方法。
【问题讨论】:
-
该示例本身旨在展示使用 Twisted 可以完成的事情。如您所见,您无法在 Windows 上执行此示例想要执行的操作。但是,您实际上有兴趣做的任何事情仍然是可能的。对于您的下一个问题,我建议您询问您的实际兴趣,而不是特定示例的局限性。 :)
-
@Jean-PaulCalderone 谢谢,我基本上想通过它创建一个可以远程登录的 shell。然后这个 shell 可以用作个人 cli,然后可以用来做其他事情
-
@Strommer 如果你想复制 Windows 命令行,那你很不走运。 Windows 使得将终端程序的输出忠实地中继到网络变得非常困难。如果您想编写 自己的 命令行,实现所有您自己的命令,您还可以做一些其他的事情......但您需要打开一个新问题,并解释哪种类型您希望能够运行的命令。
标签: python twisted simulation telnet pty