当我试图运行在命令行下面的命令,我得到的存储容量。
curl -G -d "key=val" 'http://172.16.26.2:9005/as/system/storage'
{
"userQuotaMax" : 675048,
"userQuotaUsed" : 439191
}
如果我尝试在我的python脚本运行,然后,我can'not获得相同的数据。
arg_list = curl -G -d "key=val" 'http://172.16.26.2:9005/as/system/storage'
p = Popen(arg_list, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, executable='/bin/bash')
output = p.stdout.read()
print output
任何帮助将非常感激。
除了使用POPEN()调用卷曲的,你可能会得到更好的使用请求服务。
http://docs.python-requests.org/en/master/user/quickstart/
所以像(用于GET):
import requests
payload = {"key" :"val"}
response = requests.get("http://172.16.26.2:9005/as/system/storage", data=payload)
print(response.text)
所以像(对于POST):
import requests
payload = {"key" :"val"}
response = requests.post("http://172.16.26.2:9005/as/system/storage", data=payload)
print(response.text)
应该返回(假设API返回的HTML /文本,如果返回JSON,看看response.json()在上面的链接解释):
{
"userQuotaMax" : 675048,
"userQuotaUsed" : 439191
}
希望这可以帮助你
我的第一个猜测是你有问题,使用引号。 试试这个:
arg_list = ['/usr/bin/curl', '-G', '-d', 'key=val', 'http://172.16.26.2:9005/as/system/storage']
p = Popen(arg_list, shell=False, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
import pycurl
from StringIO import StringIO
data_size = StringIO()
curl_command = pycurl.Curl()
curl_command.setopt(curl_command.URL, 'http://{}:9005/as/system/storage'.format(ip))
curl_command.setopt(curl_command.WRITEDATA, data_size)
curl_command.perform()
curl_command.close()
output = data_size.getvalue()
这也与pycurl模块另一种解决方案。 但是,我认为是要求更好的:)