首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python SSH Server(twisted.conch)获取用户的命令

Python SSH Server(twisted.conch)获取用户的命令
EN

Stack Overflow用户
提问于 2016-04-21 10:33:51
回答 1查看 365关注 0票数 0

我愿意在我的服务器上部署一个SSH守护进程,我可以知道执行了哪些命令。但是我不知道如何获取用户的命令。实现了一个基于twisted.conch.ssh.session的单点登录服务器。我可以在SSHSessionProcessProtocol的outReceived中获得所有的标准输出,但是很难从标准输出中准确地提取用户的命令,因为这严重依赖于Linux($PS1)的提示符。

代码语言:javascript
复制
   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()
EN

回答 1

Stack Overflow用户

发布于 2016-04-22 09:17:33

您是对的;准确地获取用户的命令是非常困难的,因为(在一般情况下)从字面上不可能区分进入shell的用户输入和进入其他程序的用户输入。

您可能需要考虑编写在Twisted中运行的自己的shell,并将用户键入的命令记录到其中。但是如果你想让他们直接运行他们的登录shell,那你就大错特错了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36758571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档