Как создать тикет в rt используя python-rtkit
У меня проблемы с простым скриптом, единственная цель которого - создать один билет и каждый раз, когда я получаю
401 Credentials Required
Я дословно взял свой код с https://github.com/z4r/python-rtkit. (URL, имя пользователя и пароль отредактированы по соображениям безопасности)
from rtkit.resource import RTResource
from rtkit.authenticators import BasicAuthenticator
from rtkit.errors import RTResourceError
from rtkit import set_logging
import logging
set_logging('debug')
logger = logging.getLogger('rtkit')
resource = RTResource('http://rt.example.com/REST/1.0/', 'user', 'pass', BasicAuthenticator)
#create a ticket
content = {
'content': {
'Queue': 'General - unassigned', #General - unassigned is the name of the desired queue
'Subject' : 'Test Ticket Python', #text to go into subject field
}
}
try:
response = resource.post(path='ticket/new', payload=content,)
logger.info(response.parsed)
except RTResourceError as e:
logger.error(e.response.status_int)
logger.error(e.response.status)
logger.error(e.response.parsed)
Вот вывод, который я получаю из этого
[DEBUG] POST ticket/new
[DEBUG] {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'Accept': 'text/plain'}
[DEBUG] 'content=Queue: General - unassigned\nSubject: Test Ticket Python'
[INFO] POST
[INFO] http://rt.example.com/REST/1.0/ticket/new
[DEBUG] HTTP_STATUS: 200 OK
[DEBUG] 'RT/3.6.6 401 Credentials Required\n'
[DEBUG] RESOURCE_STATUS: 401 Credentials required
[INFO] []
[INFO] []
Кто-нибудь знает, как это исправить? Мне просто нужно уметь делать билеты с питоном. Таким образом, в качестве альтернативы можно использовать другие методы, которые не используют python-rtkit, если они достигают конечной цели.
РЕДАКТИРОВАТЬ: Открытие URL из моего браузера (после входа в систему) приводит к
RT/3.6.6 200 Ok
# Invalid object specificaiton: 'index.html'
id: index.html
Открытие URL из моего браузера (до входа в систему) приводит к
RT/3.6.6 401 Credentials Required
Я не особо разбираюсь во всем, что связано с Интернетом, поэтому я не знаю, как посмотреть возвращаемый заголовок сервера. Стоит отметить, что я попробовал Аутентификацию Cookie без каких-либо лучших результатов.
РЕДАКТИРОВАТЬ: запрос @Zaroth. Я использую https.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://rt.example.com/REST/1.0/">here</a>.</p>
<hr>
<address>Apache/2.2.3 (Red Hat) Server at rt.hdms.com Port 80</address>
</body></html>
2 ответа
Хорошо, я не знаю, почему это не сработало в первый раз, но мне удалось заставить его работать сейчас, используя CookieAuthentication вместо BasicAuthentication.
Вы должны использовать правильный URL для вашего веб-сервиса RT.
Я предполагаю, что URL http://rt.example.com/REST/1.0/
не указывает на ваш работающий экземпляр RT?
Или вы добавили rt.example.com в свой hosts
файл или аналогичный?
На каком хосте / порту работает ваш экземпляр RT?