Назад | Перейти на главную страницу

Аутентификация Hudson через wget возвращает ошибку http 302

Я пытаюсь создать сценарий для аутентификации в Hudson с помощью wget и сохранить cookie аутентификации.

Содержание скрипта следующее:

wget \
--no-check-certificate \
--save-cookies /home/hudson/hudson-authentication-cookie \
--output-document "-" \
'https://myhudsonserver:8443/hudson/j_acegi_security_check?j_username=my_username&j_password=my_password&remember_me=true'

К сожалению, когда я запускаю этот скрипт, я получаю:

--2011-02-03 13:39:29--  https://myhudsonserver:8443/hudson/j_acegi_security_check?     j_username=my_username&j_password=my_password&remember_me=true
Resolving myhudsonserver... 127.0.0.1
Connecting to myhudsonserver|127.0.0.1|:8443... connected.
WARNING: cannot verify myhudsonserver's certificate, issued by `/C=Unknown/ST=Unknown/L=Unknown/O=Unknown/OU=Unknown/CN=myhudsonserver':
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://myhudson:8443/hudson/;jsessionid=087BD0B52C7A711E0AD7B8BD4B47585F    [following]
--2011-02-03 13:39:29--      https://myhudsonserver:8443/hudson/;jsessionid=087BD0B52C7A711E0AD7B8BD4B47585F
Reusing existing connection to myhudsonserver:8443.
HTTP request sent, awaiting response... 404 Not Found
2011-02-03 13:39:29 ERROR 404: Not Found.

Нет журнала ошибок ни в одном из файлов журнала Tomcat Hudson.

Кто-нибудь знает, что может происходить?

Спасибо.

Вот эквивалент с использованием curl:

curl --cookie-jar /home/hudson/hudson-authentication-cookie \
     --data-urlencode "j_username=my_username" \
     --data-urlencode "j_password=my_password" \
     --data-urlencode "remember_me=true" \
     --insecure https://myhudsonserver:8443/hudson/j_acegi_security_check

Это должно сработать, хотя в зависимости от того, что вам действительно нужно сделать, может быть лучший подход.

В частности, если вам нужен только один запрос, включите "from = / hudson / ..." в данные формы, чтобы перенаправление 302 приводило к ресурсу, который вас действительно интересует. Если вы добавите --location, curl будет следовать перенаправлению 302 и будет использовать файлы cookie (к сожалению, по-прежнему требуется --cookie-jar). Это делает хороший однострочник:

curl --cookie-jar /home/hudson/hudson-authentication-cookie \
     --data-urlencode "j_username=my_username" \
     --data-urlencode "j_password=my_password" \
     --data-urlencode "from=/hudson/view/myview/api/json" \
     --insecure --location https://myhudsonserver:8443/hudson/j_acegi_security_check