运行Curl命令后获取200个Ok状态,并利用该状态在RUNDECK中用python写一个条件。

问题描述 投票:0回答:1

以下是给出RUNDECK运行状态的CURL命令。

url = "curl -kv https://vn2-lpgdmt-capp99.rno.vzon.com:8990/health/check"

我的代码如下。

payload={}
Headers={ i have defined here }

response = requests.request("GET", url, headers=headers, data = payload,verify=False)
status = response.status_code
print(status)
response_val = response.json()
response_val = json.dumps(response_val)

if status != 200  :
    print('********Error in Response***********')
    print('Status   :'+ str(status))
    print('********Please check for Rundeck Options,URL*********')
    print(response.content)
else:
    for pattern in part:
        if re.search(pattern,  response_val):
            print('Data Found for ServerNo :'+ pattern)
        else:
            print('No Data Found for ServerNo :'+ pattern)
print('**************************************************************************')

我想给多个curl命令并检查所有这些服务器的状态。if status is 200 ok then send msg saying Heartbeat Good, if not Hearbeat is Dead" Error

帮忙

python error-handling http-status-codes rundeck
1个回答
0
投票

你可以在第一步(在bash上)生成一个数据值,在第二步(在python上)拾取,我留下一个作业定义的例子。

<joblist>
  <job>
    <context>
      <options preserveOrder='true'>
        <option name='node' value='myhost' />
      </options>
    </context>
    <defaultTab>nodes</defaultTab>
    <description></description>
    <executionEnabled>true</executionEnabled>
    <id>145d3f4e-44fc-4e25-9759-bf9d8867ef20</id>
    <loglevel>INFO</loglevel>
    <name>DataPassingDemo</name>
    <nodeFilterEditable>false</nodeFilterEditable>
    <plugins />
    <scheduleEnabled>true</scheduleEnabled>
    <sequence keepgoing='false' strategy='node-first'>
      <command>
        <description>get the code and save it on data variable</description>
        <fileExtension>.sh</fileExtension>
        <plugins>
          <LogFilter type='key-value-data'>
            <config>
              <invalidKeyPattern>\s|\$|\{|\}|\\</invalidKeyPattern>
              <logData>true</logData>
              <regex>^(CODE)\s*=\s*(.+)$</regex>
            </config>
          </LogFilter>
        </plugins>
        <script><![CDATA[response=$(curl --write-out %{http_code} --silent --output /dev/null http://@option.node@:4440)
echo "CODE=$response"]]></script>
        <scriptargs />
        <scriptinterpreter>/bin/bash</scriptinterpreter>
      </command>
      <command>
        <description>your python 3 logic</description>
        <fileExtension>.py</fileExtension>
        <script><![CDATA[# get the data value
print("The code is: " + str(@data.CODE@))

# and you can do anything with @job.threadcount@
if (@data.CODE@ == 302):
    print ("Server OK")
else:
    print ("Check the instance")]]></script>
        <scriptargs />
        <scriptinterpreter>python3</scriptinterpreter>
      </command>
    </sequence>
    <uuid>145d3f4e-44fc-4e25-9759-bf9d8867ef20</uuid>
  </job>
</joblist>

另一种方法是通过 urllib 把所有的进程留给你的 python 脚本,看一下 这个.

你可以检查一个很好的数据传递解释 此处.

© www.soinside.com 2019 - 2024. All rights reserved.