/ / cURL: envoi de données de pièce à partir de stdin dans POST - python, json, curl, stdin

cURL: Envoi de données de pièce à partir de stdin dans POST - python, json, curl, stdin

Je "fais 2 cURLs. Les données de 1 curl doivent être formatées et envoyées comme une entrée dans le 2ème cURL. J'ai" essayé ce qui suit:

curl -XPOST -H "Type de contenu: application / json" -d "{" a ": 1," b ": 2}" "https://a.com/a"| python -c" import json, sys; o = json.load (sys.stdin); o1 = dict (id = o ["foo"], hash = o ["barre"]); print (json.dumps (o)); print (json.dumps (o1)); "| curl -XPOST -H" Type de contenu: application / json " https://a.com/b -ré @-

Dans la combinaison de cURL ci-dessus, j’analyseles données reçues par 1st cURL via python, puis imprimez la sortie reçue et la sortie analysée sur stdin, puis prenez l’entrée de stdin comme données pour 2nd cURL.

Problème: Il y a deux JSON qui sont imprimés en stdin et tout cela est transmis en tant que données dans 2nd cURL. Comment puis-je sélectionner uniquement la dernière ligne de stdin, qui représente les données à transmettre dans le 2nd cURL?

Réponses:

0 pour la réponse № 1

Une approche possible suggérée par armnotstrong m'a aidé à bien faire les choses. Bien que ce soit, techniquement, pas une réponse à la question, mais c'est une bonne solution de contournement.

J'imprime mes sorties, qui ne sont pas obligées d'envoyer au 2nd cURL, dans le flux d'erreur. Voici le cURL actif:

curl -XPOST -H "Type de contenu: application / json" -d "{" a ": 1," b ": 2}" "https://a.com/a"| python -c" import json, sys; o = json.load (sys.stdin); o1 = dict (id = o ["foo"], hash = o ["bar"]); sys.stderr.write (json.dumps (o)); print (json.dumps (o1)); "| curl -XPOST -H" Type de contenu: application / json " https://a.com/b -ré @-