如何解决尝试将动态值传递给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'}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。