2017-01-18 21 views
1

Я пытаюсь написать скрипт оболочки, чтобы загрузить файл, закодированный в base64 для cloudinary с помощью Curl, как этотКак загрузить файлы в облачный скрипт из сценария оболочки?

#!/bin/bash 

timestamp=$(date +%s) 

apiSecret=$2 

fileName=$1 

data="api_key=679764637516936&file=$(base64 -w 0 $fileName)&timestamp=${timestamp}" 

datatobehashed="timestamp=${timestamp}$apiSecret" 

hash=$(echo ${datatobehashed} | sha1sum | awk '{print $1}') 

curl -v "https://api.cloudinary.com/v1_1/zolatech/raw/upload --data \"${data}&signature=${hash}\"" 

echo "" 

но он возвращает 400 Bad Request со следующим ответом {"error":{"message":"Invalid Signature 55683272b2d893c0d140af596a01d23977ede889. String to sign - 'timestamp=1484757367'."}}

так я я не с помощью API правильно? или что-то не так с моим кодом?

+0

Запустите скрипт, используя опцию '-x' проверить значения переменных. – Jdamian

+0

все переменные имеют правильное значение – zola

ответ

1

Хеш не повторил правильно, что вызывает ожидаемый sha1 несоответствия:

hash=$(echo -n ${datatobehashed} | sha1sum | awk '{print $1}') 

Вы должны использовать echo -n, в противном случае вы будете в конечном итоге с завершающего символа новой строки и плохой хэш.

эхо -n

-n Не печатать завершающий символ новой строки.

GNU Bash : echo invocation