Использование cURL для отправки JSON в скрипте BASH - PullRequest
10 голосов
/ 18 января 2012

Хорошо, вот что я пытаюсь сделать. Я пытаюсь написать скрипт быстрой сборки в bash, который будет проверять частный репозиторий из GitHub на удаленном сервере. Чтобы сделать это как можно более сложным, я хочу сгенерировать локальный ключ RSA, установленный на удаленном сервере, и добавить открытый ключ в качестве ключа развертывания для этого конкретного хранилища. Я знаю, как это сделать с помощью API GitHub, но у меня возникают проблемы при создании полезной нагрузки JSON с использованием Bash.

Пока у меня есть этот конкретный процесс, включенный ниже:

#!/bin/bash

ssh-keygen -t rsa -N '' -f ~/.ssh/keyname -q
public_key=`cat ~/.ssh/keyname.pub`

curl -u 'username:password' -d '{"title":"Test Deploy Key", "key":"'$public_key'"}' -i https://api.github.com/repos/username/repository/keys

Это просто неправильно строит полезную нагрузку. Я не эксперт, когда дело доходит до манипулирования строками в Bash, поэтому я мог бы серьезно использовать некоторую помощь. Спасибо!

1 Ответ

22 голосов
/ 18 января 2012

Не уверен, но это может помочь процитировать, где вы используете public_key, т.е.

curl -u 'username:password' \
   -d '{"title":"Test Deploy Key", "key":"'"$public_key"'"}' \
   -i https://api.github.com/repos/username/repository/keys

В противном случае отладка будет намного проще, если вы используете параметры отладки оболочки set -vx в верхней части скрипта bash.

Вы увидите каждую строку кода (или блока (для, в то время, и т. Д.)), Как она есть в вашем файле. Затем вы увидите каждую строку кода с переменными, расширенными до их значений.

Если вы все еще застряли, отредактируйте ваш пост, чтобы показать расширенные значения переменных для проблемной строки в вашем скрипте. То, что у тебя есть, на первый взгляд выглядит разумно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...