execute curl command in python
<p>I have already gone through few StackOverflow existing links for this query, did not help me.</p>

<p>I would like to run few curl command(4) and each curl commands give output. From that output, I would like to parse the few group ids for next command.</p>

<pre><code>curl --basic -u admin:admin -d \'{ "name" : "test-dev" }\' --header \'Content-Type: application/json\' http://localhost:8080/mmc/api/serverGroups
</code></pre>

<p>I have tried with as ,</p>

<pre><code>#!/usr/bin/python

import subprocess
bash_com = 'curl --basic -u admin:admin -d '{ "name" : "test-dev" }' --header 'Content-Type: application/json' http://localhost:8080/mmc/api/serverGroups'
subprocess.Popen(bash_com)
output = subprocess.check_output(['bash','-c', bash_com]) # subprocess has check_output method
</code></pre>

<p>It gives me the syntax error, though I have changed from a single quote to double quote for that curl command.</p>

<p>I have been trying with Pycurl but i have to look more into that. Is there any way we can run curl commands in python and can parse the output values and pass it to next curl command.</p>

<p>I am trying to redirect the curl commands output to text file and then parse the file via JSON. All I am trying to get "id" from about output.</p>

<pre><code>fh = os.popen(bash_com,'r')
data = fh.read()

newf = open("/var/tmp/t1.txt",'w')
sys.stdout = newf
print data

with open("/var/tmp/t1.txt") as json_data:
    j = json.load(json_data)
    print j['id']
</code></pre>

<p>I have checked the files content in JSONlint.com and got VALID JSON on it. It is throwing "ValueError: No JSON object could be decoded" at json.load line. Is there anything need to perform before parsing the redirected file.</p>

python curl esb