2012-01-17 24 views
10

Bien, esto es lo que estoy tratando de hacer. Estoy intentando escribir un script de compilación rápido en bash que verificará un repositorio privado de GitHub en un servidor remoto. Para hacer esto como "manos libres", quiero generar un conjunto de claves RSA local en el servidor remoto y agregar la clave pública como una clave de implementación para ese repositorio en particular. Sé cómo hacer esto usando la API de GitHub, pero estoy teniendo problemas para construir la carga JSON usando Bash.Usando cURL para enviar JSON dentro de una secuencia de comandos BASH

Hasta el momento, no tengo este proceso en particular incluye a continuación:

#!/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 

Es que no es construir correctamente la carga útil. No soy un experto en la manipulación de cuerdas en Bash, así que podría usar algo de ayuda. ¡Gracias!

Respuesta

22

No es seguro, pero puede ayudar a citar en el que utiliza public_key, es decir

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

lo contrario, será mucho más fácil de depurar si utiliza las opciones de depuración de la concha set -vx cerca de la parte superior de la escritura del golpe .

Vas a ver cada línea de código (o bloque (por, al tiempo, etc), ya que es en su archivo. A continuación, se ve cada línea de código con las variables ampliadas a sus valores.

Si todavía está atascado, edite su publicación para mostrar los valores expandidos de las variables para la línea del problema en su secuencia de comandos. Lo que parece razonable a primera vista.

+1

Usted es un caballero y un erudito. Tuve que aprender todo esto con bastante prisa, así que realmente todavía no entiendo completamente el escape adecuado y la manipulación de cuerdas en Bash. ¡Gracias por eso! –

+2

¡Lo felicito señor por su perspicacia y su aguda capacidad analítica! ¡Éxito continuo en sus esfuerzos! ;-) – shellter

+0

¡Muchas gracias! Hay algunas otras respuestas a preguntas similares que son incorrectas. ¡Esto es justo lo que necesitaba! – Brian

Cuestiones relacionadas