команда curl в git-bash - PullRequest
       13

команда curl в git-bash

0 голосов
/ 06 июня 2018

У меня есть скрипт, написанный на bash и протестированный, работающий в Linux (CentOS 7) и на MacOS.Сценарий использует cURL для взаимодействия с REST API-совместимой платформой данных (XNAT).

Я надеялся, что пользователи Windows могут использовать тот же сценарий в git-bash, который поставляется в комплекте с Git для Windows.К сожалению, кажется, что при использовании cURL в git-bash возникает проблема.

Первое использование cURL, которое я использую, - это получение файла cookie JSESSION:

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

В Linux, это запрашивает у пользователя пароль и сохраняет куки в COOKIE.В git-bash выдача команды зависает, пока не используется «ctrl + C» для ее прерывания.Странно, что в этот момент отображается сообщение с запросом пароля, но слишком поздно сценарий завершен.

У меня есть подозрение, что это может быть связано с проблемами CR или LF, но не можетнайдите информацию, которую я понимаю по этому поводу.

Любые указатели приветствуются!

Спасибо

РЕДАКТИРОВАТЬ: Похоже, что приведенная выше команда работает нормально, еслиЯ передаю пароль в команде следующим образом:

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

Однако, как указано здесь: Использование cURL с именем пользователя и паролем? Я бы предпочел, чтобы пользователь не вводил свой пароль какаргумент команды.

Таким образом, теперь возникает вопрос "почему cURL не запрашивает пароль при использовании первой команды?"когда в git-bash в Windows эта команда работает так, как ожидается в Linux или MacOS:

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

1 Ответ

0 голосов
/ 07 июня 2018

Завершая ответ на мой собственный вопрос, надеюсь, что это может быть полезно кому-то еще.

Кажется, эта проблема является известной проблемой при запуске cURL из git-bash, согласно этой теме:https://github.com/curl/curl/issues/573

В частности, см. Ответ dscho на 30 декабря 2015 :

Проблема заключается в том, что эмулятор терминалаиспользовать с Git Bash начиная с Git для Windows 2.5, MinTTY.Этот эмулятор терминала не связан с консолью Win32, поэтому пользователь не видит ничего, когда cURL хочет взаимодействовать с пользователем через указанную консоль.

Эта проблема имеет обходной путь, который описан здесь:https://github.com/git-for-windows/build-extra/blob/master/ReleaseNotes.md#known-issues

Обходной путь должен запустить curl через winpty следующим образом: winpty curl [arguments]

В конце концов, не проблема с CR или LF.

Оооо, git-bash не может быть magic-bullet (tm) для запуска моих сценариев bash в Windows без каких-либо усилий.Вздох ...

...