web-dev-qa-db-fra.com

commande curl dans git-bash

J'ai un script écrit en bash et testé fonctionnant sous Linux (CentOS 7) et sur MacOS. Le script utilise cURL pour interagir avec une plate-forme de données compatible avec l'API REST (XNAT)).

J'espérais que les utilisateurs de Windows pourraient utiliser le même script dans git-bash fourni avec Git pour Windows. Malheureusement, il semble y avoir un problème lors de l'utilisation de cURL dans git-bash.

La première utilisation que je fais de cURL est de récupérer un cookie JSESSION:

COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`

Sous Linux, cela demande à l'utilisateur un mot de passe et stocke le cookie dans COOKIE. Dans git-bash, l'exécution de la commande se bloque, jusqu'à l'utilisation d'un "ctrl + C "pour l'interrompre. Étrangement à ce stade, le message de requête pour le mot de passe s'affiche, mais trop tard, le script est terminé.

Je soupçonne que cela peut être lié à des problèmes de CR ou LF, mais je ne trouve pas certaines informations que je comprends à ce sujet.

Tous les pointeurs seraient les bienvenus!

Je vous remercie

EDIT: Il semble que la commande ci-dessus fonctionne correctement si je passe le mot de passe dans la commande comme ceci:

COOKIE=`curl -k -u $USERNAME:$PASSWORD https://theaddress/JSESSION`

Cependant, comme indiqué ici: tilisation de cURL avec un nom d'utilisateur et un mot de passe? Je préfère éviter que l'utilisateur tape son mot de passe comme argument de commande.

La question est donc maintenant "pourquoi cURL ne demande-t-il pas un mot de passe lorsque j'utilise la première commande?" dans git-bash sous Windows, alors que cette commande se comporte comme prévu sous Linux ou MacOS:

 COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`
6
Cyril

En finissant par répondre à ma propre question, j'espère que cela pourra être utile à quelqu'un d'autre.

Il semble que ce problème soit un problème connu lors de l'exécution de cURL à partir de git-bash, selon ce fil: https://github.com/curl/curl/issues/57

En particulier, voir la réponse de dscho le 30 décembre 2015:

Le problème est l'émulateur de terminal que nous utilisons avec Git Bash depuis Git pour Windows 2.5, MinTTY. Cet émulateur de terminal n'est pas associé à une console Win32, par conséquent l'utilisateur ne voit rien lorsque cURL veut interagir avec l'utilisateur via ladite console.

Ce problème a une solution de contournement, qui est documentée ici: https://github.com/git-for-windows/build-extra/blob/master/ReleaseNotes.md#known-issues

La solution consiste à exécuter curl via winpty comme suit: winpty curl [arguments]

Ce n'est pas un problème avec CR ou LF après tout.

Soooo, git-bash n'est peut-être pas le magic-bullet (tm) pour exécuter mes scripts bash dans Windows sans effort. Soupir...

6
Cyril