2012-01-17 2 views
10

Хорошо, вот что я пытаюсь сделать. Я пытаюсь написать сценарий быстрой сборки в bash, который будет проверять частный репозиторий от GitHub на удаленном сервере. Чтобы сделать это «как можно лучше», я хочу создать локальный ключ RSA на удаленном сервере и добавить открытый ключ в качестве ключа развертывания для этого конкретного репозитория. Я знаю, как это сделать, используя API GitHub, но у меня возникли проблемы с созданием полезной нагрузки JSON с помощью Bash.Использование cURL для отправки 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, поэтому я мог бы серьезно использовать некоторую помощь. Благодаря!

ответ

22

Это не уверен, но это может помочь процитировать где вы используете 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 вблизи верхней части Баш скрипт ,

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

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

+1

Вы джентльмен и ученый. Мне пришлось изучить все эти вещи в довольно спешке, поэтому я пока не полностью понимаю правильное экранирование и строчную манипуляцию в Bash. Спасибо за это! –

+2

Я благодарю вас за ваше понимание и сильные аналитические навыки! Продолжайте успех в ваших начинаниях! ;-) – shellter

+0

Большое вам спасибо! Есть несколько других ответов на похожие вопросы, которые неверны. Это то, что мне нужно! – Brian

Смежные вопросы