【发布时间】:2016-11-16 16:41:41
【问题描述】:
我用 Twisted Conch 编写了一个 SSH 服务器。但是遇到了一个棘手的问题。假设用户A和用户B通过ssh命令登录到twisted ssh服务器。然后用户A在服务器上tail或cat一个大文件(大于100M),通过twisted ssh服务器会引起大量回显,使得python ssh进程(twisted.conch)cpu使用率很高(大于95%) ,甚至100%),那么用户B就会被屏蔽,很长时间没有反应。当发现用户A通过twisted ssh服务器有大量回声并且不阻塞其他连接的用户时,有没有办法让用户A的会话(0.5秒)休眠。
import sys
import checkers
from twisted.python import components, log, logfile
from twisted.cred import portal
from twisted.internet import reactor
from twisted.conch.ssh import factory, keys, session, filetransfer
from twisted.conch.unix import UnixSSHRealm, SSHSessionForUnixConchUser, UnixConchUser
import keyvalue
if __name__ == "__main__":
sshFactory = factory.SSHFactory()
sshFactory.portal = portal.Portal(UnixSSHRealm())
sshFactory.portal.registerChecker(checkers.UsernamePasswordChecker())
sshFactory.publicKeys = {
'ssh-rsa': keys.Key.fromString(keyvalue.publicKey)}
sshFactory.privateKeys = {
'ssh-rsa': keys.Key.fromString(keyvalue.privateKey)}
components.registerAdapter(
SSHSessionForUnixConchUser, UnixConchUser, session.ISession)
log.startLogging(sys.stdout)
reactor.listenTCP(2222, sshFactory)
reactor.run()
【问题讨论】:
标签: python linux ssh twisted.conch