215 votes

Pourquoi cURL renvoie-t-il l'erreur "(23) Failed writing body" ?

Il fonctionne bien en tant qu'outil unique :

curl "someURL"
curl -o - "someURL"

mais ça ne fonctionne pas dans un pipeline :

curl "someURL" | tr -d '\n'
curl -o - "someURL" | tr -d '\n'

il revient :

(23) Failed writing body

Quel est le problème avec le piping de la sortie cURL ? Comment mettre en mémoire tampon la totalité de la sortie cURL et la traiter ensuite ?

11voto

static Points 1090

C'était donc un problème d'encodage. Iconv résout le problème

curl 'http://www.multitran.ru/c/m.exe?CL=1&s=hello&l1=1' | iconv -f windows-1251 | tr -dc '[:print:]' | ...

6voto

LLL Points 777

J'ai eu la même erreur mais pour une raison différente. Dans mon cas, j'avais une partition (tmpfs) avec seulement 1 Go d'espace et j'étais en train de télécharger un gros fichier qui a finalement a rempli toute la mémoire sur cette partition et j'ai eu la même erreur que vous.

6voto

wisbucky Points 829

Si vous essayez quelque chose de similaire comme source <( curl -sS $url ) et obtenir le (23) Failed writing body c'est parce que le sourcing d'une substitution de processus ne fonctionne pas en bash 3.2 (la valeur par défaut pour macOS).

À la place, vous pouvez utiliser cette solution de contournement.

source /dev/stdin <<<"$( curl -sS $url )"

5voto

user33192 Points 141

Essayez la commande avec sudo a fonctionné pour moi. Par exemple :

sudo curl -O -k 'https url here'

note : -O (c'est un o majuscule, pas un zéro) & -k pour les url https.

4voto

lallolu Points 119

Pour moi, c'était une question de permission. Docker run est appelé avec un profil d'utilisateur mais Root est l'utilisateur à l'intérieur du conteneur. La solution a été de faire en sorte que curl écrive sur /tmp, puisque tous les utilisateurs ont le droit d'écrire, et pas seulement Root.

J'ai utilisé l'option -o.

-o /tmp/file_to_download

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X