2016-11-27 2 views
-1

Я подключаюсь к Zabbix, но поскольку он не предоставляет API для одного из ресурсов, которые я хочу, мне пришлось использовать wget, чтобы выполнить эту работу.Какая библиотека python может выполнять сложную операцию `wget`?

Какая библиотека python позволит мне выполнить «сложную» операцию wget?

К "сложным" я имею в виду:

# Logging in to Zabbix 
wget -4 --no-check-certificate --save-cookies=z.coo -4 --keep-session-cookies -O - -S --post-data='name=username&password=somepassword&enter=Sign in&autologin=1&request=' 'https://some.zabbix-site.com:50100/index.php?login=1' 

# Grabbing the network image 
wget -4 --no-check-certificate --load-cookies=z.coo -O result.png 'https://some.zabbix-site.com:50100/map.php?sysmapid=5&severity_min=0' 

Не уверен, что если бы requests получить работу? Мне нужно 1) войти и сохранить возвращенные файлы cookie, 2) использовать возвращенный файл cookie для аутентификации и получения изображения.

+3

'requests' может справиться с этим прекрасно. Вы можете использовать механизм 'request'' 'Session' для автоматического использования файлов cookie. – ForceBru

+0

Отлично, спасибо. Ваш комментарий привел меня к этому сообщению SO: http://stackoverflow.com/questions/15778466/using-python-requests-sessions-cookies-and-post – sivabudh

+0

@ForceBru благодарит за ваше предложение. Теперь я получил ответ. – sivabudh

ответ

1

Спасибо @ForceBru за ваше предложение. Мне удалось решить это решение сейчас! Вот оно:

import requests 
s = requests.Session() 
data = {'name': 'username', 'password': 'password', 'enter': 'Sign in', 'autologin': '1', 'request': ''} 
url = 'https://some.zabbix-site.com:50100/index.php?login=1' 
r = s.post(url, data=data) # use this if the SSL certificate is valid 
r = s.post(url, data=data, verify=False) # use this if the SSL certificate is unsigned 
r.cookies # check the cookies value 
re = s.get('https://some.zabbix-site.com:50100/map.php?sysmapid=5&severity_min=0') 
re.content # the file content is here! 

Ссылки:

Смежные вопросы