我已经通过了几个StackOverflow现有链接来查询此查询,但没有帮助我。
我想运行几个curl命令(4),每个curl命令都会输出。从那个输出中,我想解析几个组ID以获得下一个命令。
curl --basic -u admin:admin -d \'{ "name" : "test-dev" }\' --header \'Content-Type: application/json\' http://localhost:8080/mmc/api/serverGroups
我尝试过as,
#!/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
它给了我语法错误,尽管我已从单引号更改为该curl命令的双引号。
我一直在尝试使用Pycurl,但我必须更多地考虑这一点。有没有办法在python中运行curl命令,可以解析输出值并将其传递给下一个curl命令。
答案 0 :(得分:1)
您可以将os.popen与
一起使用fh = os.popen(bash_com, 'r')
data = fh.read()
fh.close()
或者您可以像这样使用子流程
cmds = ['ls', '-l', ]
try:
output = subprocess.check_output(cmds, stderr=subprocess.STDOUT)
retcode = 0
except subprocess.CalledProcessError, e:
retcode = e.returncode
output = e.output
print output
你必须在列表中组织你的命令和参数。
或者你只是简单地使用requests.get(...)。
不要忘记:使用popen,您可以通过命令参数进行shell注入!
答案 1 :(得分:0)
使用os.open(bash_com,'r')然后使用fh.read()
更好地输出%收到的总百分比%Xferd平均速度时间时间当前时间 Dload上载总左转速度 199 172 0 172 0 27 3948 619 - : - : - - : - : - - : - : - 4027 的 { “HREF”: “http://localhost:8080/mmc/api/serverGroups/39a28908-3fae-4903-adb5-06a3b7bb06d8”, “serverCount”:0, “姓名”: “测试-dev的”, “ID”: “39a28908-3fae-4903-adb5-06a3b7bb06d8”} 强>
尝试了解fh.read()是否已执行curl命令?请纠正我
答案 2 :(得分:0)
我正在尝试将curl命令输出重定向到文本文件,然后通过JSON解析文件。我试图从输出中得到“id”。
.andExpect(request().asyncResult("Expected output"))
我已经检查了JSONlint.com中的文件内容并获得了VALID JSON。在json.load行抛出“ValueError:No JSON对象无法解码”。在解析重定向文件之前是否需要执行任何操作。