我基于twisted sshsimpleserver.py编写了一个sshdaemon,它运行得很好。
http://twistedmatrix.com/documents/current/conch/examples/
但现在我想要向EchoProtocol传递一个命令行参数,以根据该参数更改其行为。我该怎么做?在这种情况下,我想将'options.test'参数传递给我的协议。
[...]
if __name__ == '__main__':
parser = optparse.OptionParser()
parser.add_option('-p', '--port', action = 'store', type = 'int',
dest = 'port', default = 1235, help = 'server port')
parser.add_option('-t', '--test', action = 'store', type =
'string', dest = 'test', default = '123')
(options, args) = parser.parse_args()
components.registerAdapter(ExampleSession, ExampleAvatar,
session.ISession)
[...]
reactor.listenTCP(options.port, ExampleFactory())
reactor.run()
由于会话实例是由工厂创建的,因此我似乎无法将附加参数传递给会话构造函数或协议。
我已经尝试将选项名称设置为全局变量,但在协议上下文/范围中不可见。
顺便说一句,我将协议类移动到了自己的文件中,并在主文件中导入它。