[关闭]
@RedFree 2017-07-14T02:29:31.000000Z 字数 1958 阅读 522

扫描器模块编写相关规范

扫描器 编码规范


项目规范:


插件运行状态监控处理

插件运行状态说明

插件在集群上以subprocess.popen的方式执行,通过输入输出进行交互,运行状态有如下几种:

  1. 0 成功
  2. 0 失败

处理方法:

状态码 含义 常见原因 处理方案 负责人
0 成功 - - -
1 未归类错误 1.根据实际情况处理
2 python脚本不存在 1.部署问题 1.修复部署问题 RedFree
100 插件执行超时 1.插件编写问题
2.网络问题
3.目标服务器慢
4.目标封禁扫描集群
1.本地看是否能够在单机复现,是的话优化脚本
2.到扫描服务器看是否可以复现,判断是否网络问题
插件作者;插件运营负责人
101 插件有未处理异常 1.插件编写问题 1.捕获异常 插件作者;插件运营负责人
102 输出无法json序列化 1.插件编写问题,打印了额外信息 1.去除额外信息 插件作者;插件运营负责人
103 子进程执行错误 1.内存问题,导致插件无法启动 1.根据实际情况处理 RedFree
104 框架错误,worker 处理subtask时,出现异常 1.执行框架问题 1.修复框架 RedFree

插件输出

插件exit code

超时终止前插件返回中间结果

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import sys
  4. import time
  5. import json
  6. import signal
  7. class Test(object):
  8. def __init__(self):
  9. try:
  10. signal.signal(signal.SIGTERM, self.on_process_killed) # 软件终止信号
  11. signal.signal(signal.SIGINT, self.on_process_killed) # Ctrl + C
  12. except Exception, e:
  13. print(str(e))
  14. self.result = ""
  15. def do_some(self):
  16. for x in range(1, 100):
  17. self.result = self.result + "%s" % str(x)
  18. time.sleep(1)
  19. def on_process_killed(self, s, e):
  20. print json.dumps(self.result)
  21. sys.exit(100)
  22. if __name__ == "__main__":
  23. cls = Test()
  24. cls.do_some()

工作规范:


项目流程

Master > 项目需求 > [讨论] > 项目负责人 > 计划 > [讨论] > 代码 > [review(项目组)] > 部署(Beta) > 测试+复测 > 报告 > 部署(线上)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注