WebHook接口传入参数并交给shell执行

参考文档1:https://blog.csdn.net/lswzw/article/details/106917430

参考文档2:https://stackoverflow.com/questions/67300515/rundeck-webhook-to-pass-an-argument-to-a-shell-script


WebHook部署按此执行即可:https://teddyou.com/?id=144


新建一个json文件,作为WebHook启动配置文件,以下为实例:

[
  {
    "id": "4444", // 这里填写 http://server/hooks/{ID} 对应的是{ID} 值。也是唯一值。
    "execute-command": "./test4.sh", // 须要执行的shell文件。
    "command-working-directory": "./", // 执行的工作目录。
    "pass-arguments-to-command":  // 指定获取 post请求参数
    [
      {
        "source": "payload",  // 这里是固定,获取请求信息
        "name": "text.content"  // 这里text.content 是获取 json里面 text:content 里面对应的值。 在测试里面能更直观查看。
      }
    ],
    "trigger-rule":  // 指定数据格式才执行。
    {
	  "match":
      {
        "type": "value",
        "value": "lswzw",  // 这里做的是匹配固定值。
        "parameter":
        {
          "source": "payload",  // 获取请求信息
          "name": "msgtype"  // 获取请求里 json   msgtype:对应的参数
        }
      }
    }
  },
    // 下面是创建一个2222 这个接口, 请求后执行不同的指令。
  {
    "id": "2222",
    "execute-command": "./test2.sh",
    "command-working-directory": "./",
    "pass-arguments-to-command":
    [
      {
        "source": "payload",
        "name": "text.content"
      }
    ],
    "trigger-rule":
    {
	  "match":
      {
        "type": "value",
        "value": "lswzw",
        "parameter":
        {
          "source": "payload",
          "name": "msgtype"
        }
      }
    }
  }
]


启动命令:

./webhook -port 9000 -hotreload -hooks webhook.json -verbose


是否启动成功留意loaded行,是否出现ID值。

[root@cd3 webhook]# ./webhook -port 9000 -hotreload -hooks ./hooks.json -verbose
[webhook] 2023/06/20 19:19:01 version 2.8.1 starting
[webhook] 2023/06/20 19:19:01 setting up os signal watcher
[webhook] 2023/06/20 19:19:01 attempting to load hooks from ./hooks.json
[webhook] 2023/06/20 19:19:01 os signal watcher ready
[webhook] 2023/06/20 19:19:01 found 2 hook(s) in file
[webhook] 2023/06/20 19:19:01   loaded: test1
[webhook] 2023/06/20 19:19:01   loaded: 2222
[webhook] 2023/06/20 19:19:01 setting up file watcher for ./hooks.json
[webhook] 2023/06/20 19:19:01 serving hooks on http://0.0.0.0:9000/hooks/{id}

此日志说明启动成功,如果启动失败,则需要继续修改配置文件。


参数的使用:

#!/bin/bash
echo $1 >> test


参数进入类似于

xxx.sh x1 x2

以上格式,如果有第二个参数使用$2即可。


如果要传入多个参数,可用以下方法:

{
  "msgtype": "val",
  "text":{
  "content":"{{player.name}}%%{{player.steam.timePlayed}}%%{{player.org.timePlayed}}"
  }
}
#!/bin/bash
C1=`echo $1|awk -F '%%' '{print $1}'`
C2=`echo $1|awk -F '%%' '{print $2}'`
C3=`echo $1|awk -F '%%' '{print $3}'`
H3=`echo "scale=2;${C3}/3600"|bc`
H2=`echo "scale=2;${C2}/60"|bc`

以特定分隔符隔开。

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。