РЕДАКТИРОВАТЬ:
Мне удалось заставить его работать с
response=$(
curl -k -X PUT -d "$marathon_payload" --write-out %{http_code} --silent --output "$tmp"\
-H "Authorization: token=$dcos_token" -H "$header_content_type" $app_id_url
)
Одиночные кавычки были причиной проблемы.Потребовалось несколько вращений, но все хорошо.
МОРАЛЬ: кавычки внутри значения не имеют значения, если значение правильно указано в кавычках, ЕСЛИ БЫ не оценивать все это, и я должен был это знать.Occam снова побеждает.
end edit
Я начинаю развертывание микросервисов в Mesosphere с помощью curl
, но это не удастся без использования eval
.С тех пор как я недавно унаследовал этот код, я пытался вычистить eval
из него просто по привычке, но это мешает мне.
Сценарий инициирует развертывание с помощью
response=$(
eval curl -k -X PUT -d "'$marathon_payload'" --write-out %{http_code} --silent --output $tmp\
-H "'Authorization: token=$dcos_token'" -H "'$header_content_type'" $app_id_url
)
Если он получает 200 или 201, он зацикливает curl
для эффективного просмотра страницы развертываний до исчезновения запроса.
chkDeploy() { rm -f $tmp;
eval curl -k -X GET --silent --write-out %{http_code} --silent --output $tmp\
-H "'Authorization: token=$dcos_token'" -H "'$header_content_type'" $deployments_url
}
response=$( chkDeploy )
$dcos_token
- строка в кодировке base64.
Затем он проверяет сервис с помощью другого цикла curl
на информационной странице, чтобы проверить номер версии. Этот работает нормально, без оценки.
chkCode() {
curl -k -X GET --write-out %{http_code} --silent --output $tmp $info_url;
}
response=$( chkCode )
Первые два возвращают 401, ошибка аутентификации.Я предполагаю, что цитирование аутентификационного токена отключено.