Intereting Posts
Почему настольная блокировка перестает работать через некоторое время? Получить индекс массива Как управляются каталоги в файловой системе? Как разрешить пользователю выполнять скрипт, принадлежащий root? Сетуид больше не работает Tomcat не смог создать файл в каталоге, принадлежащем той же группе LVM с жесткими дисками SSD и SATA Возможная роль: Почему мне нужно установить user.email в etckeeper? Может ли Linux настроиться на ожидание перезагрузки USB-хранилища, вместо того, чтобы возвращать ошибку ввода-вывода Что случилось с этим grep? Интерпретация вывода из iostat опция no-mtab не работает для монтирования В чем преимущество установки драйверов Intel с 01.org? Удаленное управление машиной Ubuntu с компьютера Windows Как настроить глобальную зону вместе с двумя неглобальными зонами в Solaris 10? Чтение текстового файла; Копирование текстовой строки без отступов; Заменить начало отступов с указанным текстом

shell: оценить выражение curl

В этом следующем сценарии я генерирую код состояния и, если statusCode = 200, я отправляю данные еще, если statusCode! = 200, я получаю токен и отправляю сообщение, вызывая eval «$ request_cmd». сильный текст Но на самом деле, когда я сделал это, я получаю эту ошибку “команда introuvable” в этой строке eval “$ request_cmd”.

#!/bin/bash #variables randomNumber=$(shuf -i000000-999999 -n1) eventTime=$(date --rfc-3339=ns | sed 's/ /T/') idEpc="OneVariable" fromRecordtime=`date --utc +%FT%T.%3NZ` goodStatus="200" printf "\n ---------------------------------> SENDING MESSAGE  GETTING TOKEN <-------------------------------------- \n\n" generatedToken=$(curl -X POST $2/MyURL/token -H 'Cache-Control: no-cache' -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials&client_secret=abesdfsd677c-6dsdfsba-4ddfsc8-978fsdfdsfsb-ec256cf65914&client_id=che-gateway' | jq -r .access_token) eval "$request_cmd" echo $request_cmd 

Здесь есть несколько вопросов.

В этом следующем сценарии я генерирую код состояния, и если statusCode = 200

Это не то, что делает ваш код. Он помещает и код состояния, и любой документ, который возвращается в переменную $request_cmd . Это может не вызвать у вас проблемы прямо сейчас, если документ пустой, но он немного неаккуратный.

См. https://superuser.com/questions/272265/getting-curl-to-output-http-status-code

Я отправляю данные еще, если statusCode! = 200, я генерирую токен и отправляю сообщение, вызывая eval «$ request_cmd»

Это не то, что делает ваш код. Предположим, вы запустили первый curl и получили что-то вроде «401 Unauthorized». eval попытается выполнить команду “401”, но нет команды, которая ее назвала.

Я думаю, что вы хотите использовать здесь функции bash . Вы можете использовать функцию bash для запуска одного и того же fragmentа кода несколько раз.

Вот пример того, что я имею в виду:

 function request_cmd { status_code=$(curl -s -o /dev/null -X POST -w "%{http_code}" --http1.0 \ "$1/api/acquire/rabbitmq/epcis" \ -H 'Authorization: Basic YWtytrytrytrytrW46trttrytrytr' \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: text/xml' \ -H 'Postman-Token: 2c4f9rtertzertertrezatre4' \ -H "X-Authorization: Bearer ${generatedToken}" \ -d 'Here i have the data') echo $status_code } request_cmd # calls curl and puts result into $status_code generatedToken=foo # changes the value of generatedToken request_cmd # calls curl again with new generatedToken value