あるカールコマンドから別のコマンドへのトークン値の転送

あるカールコマンドから別のコマンドへのトークン値の転送

トークンを取得する1つのカールコマンドの値を別のカールコマンドに転送したいと思います。同じ値を保持してください。このコードはトークン値を取得しますが、他のカールコマンドを使用するとトークンが無効になるようです。

token=$(curl -k -X 'POST' \
 '<URL>/api/api-token-auth/' \
 -H 'accept: application/json' \
 -H 'Authorization: Basic dGVzdGFkbWluOlBhc3N3b3JkJDE=' \
 -H 'Content-Type: application/x-www-form-urlencoded' \
 -d 'username=testadmin&password=Password%241' | sed -n '/ *"token": *"/ {s///; s/".*//; p;} ') echo $token && curl -k -X 'GET' \
 '<URL>/api/assessments/' \
 -H 'accept: application/json' \
 -H 'Authorization: Token $token' 

私はLinuxを使用しています。

ベストアンサー1

私が見ることができる1つの問題は、生成されたトークンにsedによって削除された文字を含めることができることです。したがって、トークンを変更すると、使用できなくなります。

この場合は、以下を使用することをお勧めします。ジャック(システムにインストールする必要があるかもしれません)呼び出しを変更する代わりにjsonを解析しますsed

どのサービスを使用しているかわからないため、呼び出しの正確な構文がわかりませんjq。おおよその推測は次のとおりです。

jq --monochrome-output --raw-output --unbuffered '"\(.token)"'

sed代わりに、私の例を使用して、jqそれがあなたに近づくようにしてください。

(これは回答資格があるかどうかはわかりませんが、私もここに新しく来たので、まだコメントできません)

おすすめ記事