一款轻量级工具,用于编排和组织您的命令行工作流
关于 • 安装 • 使用 • 工作流配置 • 并行执行 • 工作流

Rayder 是一款命令行工具,旨在简化工作流的编排与执行。您可以在 YAML 文件中定义一系列模块,每个模块包含一组待执行的命令。Rayder 帮助您自动化复杂流程,轻松简化重复性模块,并在命令之间无依赖时并行执行它们。
要安装 Rayder,请确保您的系统已安装 Go(1.16 或更高版本)。然后运行以下命令:
go install github.com/devanshbatham/[email protected]
Rayder 提供了一种直接的方式来执行在 YAML 文件中定义的工作流。使用以下命令:
rayder -w path/to/workflow.yaml
工作流在 YAML 文件中定义,结构如下:
vars:
VAR_NAME: value
# 添加更多变量...
parallel: true|false
modules:
- name: task-name
cmds:
- command-1
- command-2
# 添加更多命令...
silent: true|false
# 添加更多模块...
Rayder 允许您在工作流配置中使用变量,从而轻松地对命令进行参数化,获得更高的灵活性。您可以在工作流 YAML 文件的 vars 部分定义变量。然后,可以在命令字符串中通过双大括号({{}})引用这些变量。
要定义变量,将它们添加到工作流 YAML 文件的 vars 部分:
vars:
VAR_NAME: value
ANOTHER_VAR: another_value
# 添加更多变量...
您可以在命令字符串中使用双大括号({{}})引用变量。例如,如果定义了一个变量 OUTPUT_DIR,可以像这样使用它:
modules:
- name: example-task
cmds:
- echo "Output directory {{OUTPUT_DIR}}"
在执行工作流时,您也可以通过命令行提供变量的值。使用格式 VARIABLE_NAME=value 为特定变量提供值。例如:
rayder -w path/to/workflow.yaml VAR_NAME=new_value ANOTHER_VAR=updated_value
如果您没有通过命令行提供变量的值,Rayder 会自动应用工作流 YAML 文件 vars 部分中定义的默认值。
请注意,通过命令行提供的变量将覆盖 YAML 配置中定义的默认值。
以下是一个示例,展示如何在工作流配置中定义、引用和提供变量:
vars:
ORG: "example.org"
OUTPUT_DIR: "results"
modules:
- name: example-task
cmds:
- echo "Organization {{ORG}}"
- echo "Output directory {{OUTPUT_DIR}}"
执行工作流时,可以通过命令行像这样为 ORG 和 OUTPUT_DIR 提供值:
rayder -w path/to/workflow.yaml ORG=custom_org OUTPUT_DIR=custom_results_dir
这将覆盖默认值,并使用提供的值作为这些变量的值。
以下是一个针对反向 whois 侦察、处理根域名为子域名、解析它们并检查存活性的工作流配置示例:
vars:
ORG: "Acme, Inc"
OUTPUT_DIR: "results-dir"
parallel: false
modules:
- name: reverse-whois
silent: false
cmds:
- mkdir -p {{OUTPUT_DIR}}
- revwhoix -k "{{ORG}}" > {{OUTPUT_DIR}}/root-domains.txt
- name: finding-subdomains
cmds:
- xargs -I {} -a {{OUTPUT_DIR}}/root-domains.txt echo "subfinder -d {} -o {}.out" | quaithe -workers 30
silent: false
- name: cleaning-subdomains
cmds:
- cat *.out > {{OUTPUT_DIR}}/root-subdomains.txt
- rm *.out
silent: true
- name: resolving-subdomains
cmds:
- cat {{OUTPUT_DIR}}/root-subdomains.txt | dnsx -silent -threads 100 -o {{OUTPUT_DIR}}/resolved-subdomains.txt
silent: false
- name: checking-alive-subdomains
cmds:
- cat {{OUTPUT_DIR}}/resolved-subdomains.txt | httpx -silent -threads 1000 -o {{OUTPUT_DIR}}/alive-subdomains.txt
silent: false
要执行上述工作流,请运行以下命令:
rayder -w path/to/reverse-whois.yaml ORG="Yelp, Inc" OUTPUT_DIR=results
工作流配置中的 parallel 字段决定模块是并行执行还是顺序执行。将 parallel 设置为 true 允许模块并发运行,适用于无依赖关系的模块。设置为 false 时,模块将逐个执行。
在 Rayder 工作流仓库 中探索示例工作流和样例的集合。敬请关注更多更新!
本项目的灵感来源于优秀的 taskfile 项目。