У меня есть эта команда curl, которую я хочу ввести в код Python command = 'curl -k -u test: 123 -H "Тип контента: application / json" --digest "https://192.168.0.10/restapi/config/minutes/"'
Команда отлично работает в терминале
Я пробовал два метода с использованием Pycurl и запросов. Очевидно, ни один из них не работает. Позвольте мне поделиться далее по этому вопросу:
Подход Pycurl:
import pycurl
from io import StringIO
buffer = StringIO()
url = "https://192.168.0.10/restapi/config/minutes/"
curl = pycurl.Curl()
curl.setopt(pycurl.URL, url)
curl.setopt(pycurl.SSL_VERIFYPEER, False)
curl.setopt(pycurl.USERPWD, 'test:123')
curl.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json'])
curl.setopt(pycurl.VERBOSE, 1)
curl.perform()
resp = buffer.getvalue()
Я получаю пустую строку в качестве вывода
Подход запросов:
import requests
headers = {
'Content-Type': 'application/json',
}
response = requests.get(url, headers=headers, verify=False, auth=('test', '123'))
Я получаю "Response [401]"
где я иду не так? Iзнать, что подпроцесс не является рекомендуемым вариантом, но это единственный метод, который работает:
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()