thorns_project 分布式异步队列系统

猪猪侠 (每次有人骂我是猪我都说自己是猪猪侠) | 2015-02-06 16:50

演示地址:http://thorns.wuyun.org:8080/workers

项目地址:https://github.com/ring04h/thorns

详细安装&使用说明

https://github.com/ring04h/thorns/blob/master/README.md

thorns_project 分布式异步队列系统,wydomain分析目标系统信息后,返回给thorns控制台进行任务调度下发至redis队列系统,worker客户端从redis队列系统获取任务给wyportmap执行,将结果存入后台数据库。

运行流程

* 启动redis内存服务器,作为队列存储数据库使用

* 配置芹菜(celery)运行环境,并连接redis队列内存,读取执行任务,并返回结果存储到后端MySQL数据库

* 配置任务控制台花花(flower),并连接redis队列内存,管理所有worker客户端与执行的任务队列

* 通过run.py脚本调用celery向队列压入任务

* 通过flower的http api脚本调用api向队列压入任务

* 任务执行的结果自动存入后端数据库

运行环境

* CentOS、Kali Linux、Ubuntu、Debian

* Python 2.7.x

* Redis

* MysQL

* Celery

* Tornado

* Supervisord

使用说明(可客户端发起任务也可http api发起任务)

命令行调用

在你的任意一台worker客户端,或者thorns服务端
$ cd /home/thorns/
$ python run.py 42.62.52.1-42.62.62.254 188
$ python run.py 42.62.52.1-254 189
均可以向redis压入nmap扫描任务,worker客户端的分布式集群会自动分发任务执行,并存储到后台数据库
记得修改wyportmap.py里面的扫描结果,存到你自己的数据库

reinhard-mbp:thorns reinhard$ python run.py 42.62.52.1-254 189
--------------------------------------------------
* push 42.62.52.1 to Redis
* AsyncResult:23147d02-294d-41e5-84e5-5e1b15e72fc4
--------------------------------------------------
* push 42.62.52.2 to Redis
* AsyncResult:542984a4-4434-475f-9a62-bfc81206ea57
--------------------------------------------------
* push 42.62.52.3 to Redis
* AsyncResult:7d005661-d719-41ef-babc-4c853b2c49cc
--------------------------------------------------
* push 42.62.52.4 to Redis
* AsyncResult:ddcf9486-09d9-4dd2-9bb4-2618e6a161b8
--------------------------------------------------

wyportmap相关帮助: https://github.com/ring04h/wyportmap

HTTP API 远程调用

重启 worker 线程池:
$ curl -X POST http://thorns.wuyun.org:8080/api/worker/pool/restart/myworker

远程调用HTTP API启动一个nmap扫描任务:
$ curl -X POST -d '{"args":["42.62.52.62",2222]}' http://thorns.wuyun.org:8080/api/task/send-task/tasks.nmap_dispath

强制结束一个正在执行的任务:
$ curl -X POST -d 'terminate=True' http://thorns.wuyun.org:8088/api/task/revoke/a9361c1b-fd1d-4f48-9be2-8656a57e906b

[原文地址]