Подтвердить что ты не робот

Введите пароли интерактивно в R или R Studio (Server)?

Есть ли способ в R ввести интерактивные пароли в командную строку и скрыть их с экрана? Я знаю там readLine, но я не знаю, что пароли могут быть скрыты. Предположим, вы хотите подключиться к базе данных с помощью ROracle или RMySQL и не хотите хранить пароль в script, а скорее заставляете пользователя вводить его каждый раз, когда выполняется запрос.

Да, здесь у нас был похож question, но я чувствую, что ситуация изменилась, и стоит снова обратиться к проблеме. К сожалению, tcltk не будет работать на RStudio (Server).

Однако я видел, как люди в R Studio нашли решение для поддержки контроля версий. Я помню предыдущие версии, где я мог видеть свой пароль репо каждый раз, когда я вводил его в R Studio, но теперь это кажется исправленным. Я знаю, что это, вероятно, R Studio, но есть ли способ, которым смертные пользователи R могут получить к нему доступ при работе с R Studio Server?

4b9b3361

Ответ 1

Фактически R Studio (Server) обеспечивает хорошее решение. Вы можете получить к нему доступ с помощью функций .rs. Они предоставляют недокументированную функцию пароля, которая действительно хороша, хотя нет гарантированной поддержки навсегда и в день:

.rs.askForPassword("foo")

Вы можете найти оригинальный намек от RStudio Josh здесь: http://support.rstudio.org/help/discussions/info/1448-password-interaction-with-dbs-on-rstudio-server

EDIT: С 2015 года есть еще одно приятное решение для ввода пароля в интерактивном режиме. Вы можете использовать shiny, чтобы иметь небольшое веб-окно с формой пароля. Это обсуждение, которое у меня было с @hadley, показывает примерный фрагмент: https://github.com/rstats-db/RPostgres/issues/26

EDIT: По состоянию на 2017 год есть еще одно обновление. @m-dz указал нам на это: rstudioapi::askForPassword("Enter your pw"), а также getPass::getPass() с веб-страницы поддержки R Studio. Кроме того, я также понял, что существует .rs.api.askForPassword(), что эквивалентно первоначально предложенному вызову - по крайней мере, насколько я видел.