Python SSH服务器(扭曲的海螺)获取用户的命令

2024-06-01 20:54:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我愿意在我的服务器上部署一个SSH守护进程,我可以知道执行了什么命令。但我不知道如何获取用户的命令。 我实现了一个基于扭曲的.conch.ssh.会议。我可以得到SSHSessionProcessProtocol的outReceived中的所有stdout,但是很难从stdout中准确地提取用户的命令,因为这很大程度上依赖于Linux($PS1)的提示。在

   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()

Tags: 用户fromimport命令stdoutsystwistedkeys
1条回答
网友
1楼 · 发布于 2024-06-01 20:54:43

你是对的;很难准确地获得用户的命令,因为(在一般情况下)根本不可能区分进入shell的用户输入和进入其他程序的用户输入。在

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

相关问题 更多 >