json作为键/值并在rundeck中的步骤之间传递

时间:2018-04-19 08:48:47

标签: regex rundeck

我想使用" Log Filter Plugin"以平滑的方式在Rundeck中的步骤之间传递数据。使用"键值数据"。

我有一个步骤调用一个返回带有access_token的json的服务,例如:{"access_token": "xsada3r"}。在下一步中,我想使用该access_token发送新请求。

我似乎无法正确使用正则表达式。尝试使用:"([^"]+)"\s*:\s*"([^"]+)",?,我用" Highlight Output"进行了测试。它起作用,但不适用于"关键值数据"。

(我已经使用bash脚本解决了这个问题,但我想使用" Log Filter插件",如果可能的话)

1 个答案:

答案 0 :(得分:3)

您可以使用以下过程为作业捕获数据。 对于此示例,我们将模仿您在bash“内联脚本”步骤中接收JSON令牌格式{" access_token":" xsada3r"}的方式。由于我们将此JSON格式作为参数提供,因此我们需要修改(对于此示例)格式,以便将“双引号”保持在JSON格式内,根据我们的documentation,通过包装每个格式带单引号的双引号。

第一。第一步,我们创建内联脚本,模拟收到的JSON格式:

#!/bin/bash
json={'"access_token"':'"xsada3r"'}
echo RUNDECK:DATA:json=$json

我们将完整的JSON格式(值)设置为'json'变量(key)。然后,使用默认“RUNDECK:DATA :( key)=(value)”格式的“echo”,以便通过默认的“键值数据”日志过滤器模式获取。

第二。使用默认的正则表达式设置将“键值数据”日志过滤器添加到该步骤(这也可以设置为“全局日志过滤器”):

Add Log filter: Key Value Data

如果启用“日志数据”,您将在日志输出中注意到作业执行时捕获的键值数据:

Log Data KEY and VALUE output

第3步:对于此作业中的以下步骤,我们将从捕获的键值中回显每个JSON的名称和值。我们使用“cut”命令并使用JSON的“双引号”作为分隔符:

Next steps to use captured data

完成后,作业的日志输出将显示脚本结果,键值数据(如果启用了日志数据)以及我们回应的JSON的名称和值:

Log Output

您可以在以下网址找到有关数据传递的更多信息:

Data Passing Preview

Rundeck 2.9.0 Changes

希望有所帮助