Я пытаюсь создать сценарий для аутентификации в 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