curl
解放された項目から抽出する必要があります。
- 私のコマンドがひどく失敗した場合に備えて、ゼロ以外の
?$
戻りコードを含むbashエラーメッセージ - 接続サーバーから返されたhttpステータスコード
- 20x以外のステータスコードに付属するエラーメッセージ
- コマンド出力メッセージ
そして、4つすべてを4つの異なる変数に渡します。
私ができることは次のとおりです。次の要求でワークスペースが存在しない場合は、ワークスペースを作成します。
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"}}'
たとえば、。
私が接続しているサーバーの動作は次のようになるため、変数間でディスパッチする必要があります。
すべてが正常でワークスペースが存在しない場合は、次のように
echo "$CREATE_WORKSPACE_RESPONSE"
表示されます。
ecoemploi201
ターゲットワークスペースがすでに存在する場合は、
echo
以下が表示されます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 409 Workspace 'ecoemploi' already exists</title>
</head>
<body><h2>HTTP ERROR 409 Workspace 'ecoemploi' 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 'ecoemploi' 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を追加すると、次のものが返されます。
201
409
ただし、どちらの場合も説明が失われます。
- ステータス
201
コードは、stdoutによって生成されたワークスペースの名前を渡します。 - 失敗メッセージ
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