Я не хочу, чтобы мой сценарий развертывания Phing отображал введенные пароли в виде открытого текста, поэтому я пытаюсь создать сценарий оболочки, который читает пароль без отображения введенных символов.
Мой сценарий выглядит так:
#!/bin/bash
read -s -p "" password;
echo "$password"
(Кстати: это решение благодаря комментарию, опубликованному кем-то на трекере билетов Phing: https://www.phing.info/trac/ticket/885)
Это работает нормально, если я вызываю его прямо из командной строки, например так:
svn up --username myusername --password `/bin/bash /path/to/script/getpassword.sh`
Он также работает из Phing, если пароль не содержит специальных символов. Как ни странно, это приводит к ошибке аутентификации SVN, если я ввожу свой пароль, который содержит знак хеша (#). Я не могу воспроизвести это поведение из командной строки, как в примере выше.
Вот часть Phing:
<propertyprompt propertyname="svn.user" prompttext="Please tell me your svn username:"/>
<echo>"Please tell me your svn password:[]</echo>
<exec command="sh ${application.startdir}/path/to/script/getpassword.sh" outputProperty="svn.pass" />
<svnupdate
svnpath="/usr/bin/svn"username="${svn.user}"password="${svn.pass}"nocache="true"todir="${path-checkout}"/>
Кто-нибудь понял, что может быть причиной этой проблемы? Я пролистал источники в PEAR/pear/php/phing/tasks/ext/svn
но не нашел ничего подозрительного.
Спасибо заранее за любые предложения!
Вы пытались использовать echo -n, чтобы не печатать завершающий символ новой строки?
Других решений пока нет …