끔찍한 실패 메시지(반환 코드가 != 0인 경우), 상태 코드, 출력 및 컬의 오류 메시지를 네 가지 다른 변수로 추출합니다.

끔찍한 실패 메시지(반환 코드가 != 0인 경우), 상태 코드, 출력 및 컬의 오류 메시지를 네 가지 다른 변수로 추출합니다.

curl방출된 항목에서 추출 해야 합니다 .

  • 내 명령이 끔찍하게 실패할 경우를 대비해 0이 아닌 ?$반환 코드가 포함된 bash 오류 메시지
  • 연결된 서버에서 반환된 http 상태 코드
  • 20x가 아닌 상태 코드와 함께 제공되는 오류 메시지
  • 명령 출력 메시지

그리고 네 가지를 모두 네 가지 다른 변수로 전달합니다.

제가 할 수 있는 일은 다음과 같습니다. 다음 요청으로 작업공간이 존재하지 않는 경우 작업공간을 만듭니다.

URL=$1
USER=$2
PASSWORD=$3

WORKSPACE=ecoemploi

# Créer un workspace ecoemploi (workspace par défaut)
CREATE_WORKSPACE_JSON=$(cat <<EOF
{
   "workspace":
   {
     "name": "$WORKSPACE"
   }
}
EOF
)

CREATE_WORKSPACE_RESPONSE=$(curl --silent -X POST --write-out "%{http_code}" \
   -H 'Content-type: text/json' -u "$USER:$PASSWORD" \
   "$URL/workspaces" -d "$CREATE_WORKSPACE_JSON")

if [ $? -ne 0 ]; then
   echo "La création de workspace dans geoserver a échoué avec le code $? : $CREATE_WORKSPACE_RESPONSE"
   exit $?
fi

echo "$CREATE_WORKSPACE_RESPONSE"

curl --silent -X POST --write-out '%{http_code}' -H 'Content-type: text/json' -u admin:geoserver http://localhost:8080/geoserver/rest/workspaces -d '{"workspace": {"name": "ecoemploi"}}'예를 들어, .


내가 연결하고 있는 서버의 동작이 다음과 같기 때문에 변수 간에 디스패치해야 합니다.

  1. 모든 것이 정상이고 작업공간이 존재하지 않으면 다음과 같이 echo "$CREATE_WORKSPACE_RESPONSE"표시됩니다.
    ecoemploi201

  2. 대상 작업공간이 이미 존재하는 경우 echo다음이 표시됩니다.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 409 Workspace &apos;ecoemploi&apos; already exists</title>
</head>
<body><h2>HTTP ERROR 409 Workspace &apos;ecoemploi&apos; already exists</h2>
<table>
<tr><th>URI:</th><td>/geoserver/rest/workspaces</td></tr>
<tr><th>STATUS:</th><td>409</td></tr>
<tr><th>MESSAGE:</th><td>Workspace &apos;ecoemploi&apos; already exists</td></tr>
<tr><th>SERVLET:</th><td>dispatcher</td></tr>
</table>
<hr/><a href="https://eclipse.org/jetty">Powered by Jetty:// 9.4.48.v20220622</a><hr/>

</body>
</html>
409

--output /dev/null명령에 a를 추가 하면 다음이 반환됩니다.

  1. 201
  2. 409

하지만 두 경우 모두에 대한 설명을 잃게 됩니다.

  1. 상태 201코드는 stdout에서 생성된 작업공간의 이름을 전달합니다.
  2. 실패 메시지 409에는 stdout으로 보이는 출력이 표시됩니다. stderr에 무엇이 있는지 알고 싶습니다.

다음 굵은 변수를 채우는 명령문을 어떻게 작성합니까?

작업공간 오류 생성=$(curl --silent -X POST --write-outHTTP_STATUS_CODE
-H '콘텐츠 유형: text/json' -u "$USER:$PASSWORD"
"$URL/workspaces" -d "$CREATE_WORKSPACE_JSON") 1>CREATE_WORKSPACE_STDOUT2>CREATE_WORKSPACE_STDERR

최종 사용자 메시지를 검사하고 작성하기 위해 변수 $CREATE_WORKSPACE_ERROR$HTTP_STATUS_CODE보내고 생성하시겠습니까 ?$CREATE_WORKSPACE_STDOUT$CREATE_WORKSPACE_STDERR

관련 정보