尝试将动态值传递给Rundeck服务器

问题描述

rundeck中的变量(服务名),运行服务(sshd),我想将其传递给rundeck服务器。

import requests

runningservice=sshd

headers = {
    'Accept': 'application/json','Content-Type': 'application/json','X-Rundeck-Auth-Token': 'API',}
data = '{"argString":"-servicename runningservice "}'
response = requests.post('http://IP:PORT/api/16/job/JOBID/executions',headers=headers,data=data)

解决方法

您可以通过以下方式尝试:

具有三个选项的作业定义:

<joblist>
  <job>
    <context>
      <options preserveOrder='true'>
        <option name='opt1' value='hello' />
        <option name='opt2' value='you' />
        <option name='opt3' value='all' />
      </options>
    </context>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>062cbd2c-76b6-488b-874e-45fe9a6ea6d0</id>
    <loglevel>INFO</loglevel>
    <name>HelloWorld</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <exec>echo "${option.opt1} ${option.opt2} ${option.opt3}"</exec>
      </command>
    </sequence>
    <uuid>062cbd2c-76b6-488b-874e-45fe9a6ea6d0</uuid>
  </job>
</joblist>

Python代码(检查数据部分):

import requests
import pprint

# host definition
rdeck_instance = "localhost"
rdeck_port = "4440"
rdeck_api = "35"
rdeck_token = "aHbbJ98lhp9g6xU5HJ9T6qpgphPK19r3"
rdeck_action = "executions"
jobid = "062cbd2c-76b6-488b-874e-45fe9a6ea6d0"

# variable strings (for testing,in this case,you can put from the result from any source: another API call,fuzzy table output,etc.)
string1="one"
string2="two"
string3="three"

s = requests.Session()
r = s.post("http://" + rdeck_instance +  ":" + rdeck_port +"/api/" + rdeck_api + "/job/" + jobid + "/" + rdeck_action + "?authtoken=" + rdeck_token,headers = {"Accept" : "application/json"},data = { "argString" : "-opt1 {} -opt2 {} -opt3 {}".format(string1,string2,string3)})

# json output
pprint.pprint(r.json())

结果:

{'argstring': '-opt1 one -opt2 two -opt3 three','date-started': {'date': '2020-08-11T13:45:23Z','unixtime': 1597153523995},'description': 'echo "${option.opt1} ${option.opt2} ${option.opt3}"','executionType': 'user','href': 'http://localhost:4440/api/35/execution/16','id': 16,'job': {'averageDuration': 406,'description': '','group': '','href': 'http://localhost:4440/api/35/job/062cbd2c-76b6-488b-874e-45fe9a6ea6d0','id': '062cbd2c-76b6-488b-874e-45fe9a6ea6d0','name': 'HelloWorld','options': {'opt1': 'one','opt2': 'two','opt3': 'three'},'permalink': 'http://localhost:4440/project/ProjectEXAMPLE/job/show/062cbd2c-76b6-488b-874e-45fe9a6ea6d0','project': 'ProjectEXAMPLE'},'permalink': 'http://localhost:4440/project/ProjectEXAMPLE/execution/show/16','project': 'ProjectEXAMPLE','status': 'running','user': 'admin'}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...