zoukankan      html  css  js  c++  java
  • Python——eventlet.backdoor

      eventlet.backdoor 是正在运行中的进程内的 Pyhon 交互解释器。

      该模块便于检测一个长期运行进程的运行状态,提供了一种可以不阻塞应用正常操作的 Pyhon 交互解释器,从而极大地方便了调试、性能调优或仅仅是了解事情是怎么运转的。

      在应用中孵化一个协程,这个协程运行一个 backdoor_server ,这个 backdoor_server 中有一个处于监听状态的套接字:

    eventlet.spawn(backdoor.backdoor_server, eventlet.listen(('localhost', 3000)))
    

      

      当这个协程运行时,就可以通过 telnet 访问指定的端口,进而进入到应用的“后门”中了:

      

    $ telnet localhost 3000
    Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
    [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import myapp
    >>> dir(myapp)
    ['__all__', '__doc__', '__name__', 'myfunc']
    >>>
    

      

      backdoor 很乐意在命令间将控制转给应用的其他部分,所以你可以观察一个长期服务请求的服务器中不同解释器命令带来的状态改变。

     eventlet.backdoor.backdoor(conn_info, locals=None) 

      
      在一个套接字上创建一个仅有一个已连接用户的交互控制台。这个命令不会阻塞调用者,因为它孵化了一个新的 greenlet 来控制这个控制台。该函数应该从一个接受循环中调用,比如 backdoor_server。
      
     eventlet.backdoor.backdoor_server(sock, locals=None) 
      
      一个会在参数 sock 上运行一个 backdoor server 的阻塞函数,接受连接,同时为每一个连接的客户端提供控制台。参数 locals 是一个包含在解释器的 locals() 调用中的字典,可以方便的保存重要的应用变量。
  • 相关阅读:
    linux每日命令(31):tar命令
    Django——model基础
    Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
    Django
    linux每日命令(30):Linux 用户及用户组相关文件、命令详解
    linux每日命令(29):chown命令
    20170430深圳Meetup
    静态库嵌套引用问题
    JD-Store购物网站复盘——20170312
    20170305Meetup Git、heroku drop db
  • 原文地址:https://www.cnblogs.com/Security-Darren/p/4172717.html
Copyright © 2011-2022 走看看