Используемый вами заголовок Authorization
не работает.Возможно, синтаксис не Bearer =aAbBcCdDeEfF0123456
, а что-то еще для сервера, работающего на haxsne09
, возможно, без =
, как предлагает @MarcoS.В качестве альтернативы, ваша команда grep может возвращать слишком много символов (возможно, нецензурная цитата).
Я переписал ваш код ниже, чтобы сделать его более читабельным.Вы заметите, что я:
- Изменил соответствующие группы в
sed
, чтобы захватывать только необходимые части и помещать их в переменные, используя read
.Я также использовал флаг -E
, чтобы избежать необходимости использовать \(
и \)
- Удалил ненужные циклы
for
- Правильно процитировал все расширения переменных
- Добавлены некоторые разрывы строк для удобства чтения
- Удалены некоторые временные файлы и связанные с ними бесполезные использования cat
Вот обновленный скрипт:
#!/bin/bash
curl -k -H 'Content-Type:application/json' -d \
'{"username":"admin","password":"adminpw", "tenant":"master"}' \
https://localhost/tron/api/v1/tokens > /tmp/token.data
token=$(grep -Po '{"token":"\K[^ ]...................' /tmp/token.data)
IFS=, read -r firstName lastName email username < <(
</tmp/curloutput.txt sed 's/{"clientInactivityTime"/\n&/' |
sed -nE 's/.*."firstName":"([^"]*)".*"lastName":"([^"]*)").*"email":"([^"]*).*"username":"([^"]*)".*/\1,\2,\3,\4/p'
)
curl -k -X POST 'https://haxsne09/tron/api/v1/users' -H 'accept: application/json' \
-H "Authorization: Bearer $token" -H "Content-Type: application/x-www-form-urlencoded" -d \
"first_name=$firstName&last_name=$lastName&email=$email&password=Tata123^&username=$username&is_active=true"
echo