Способ безопасно дать пароль R приложения из терминала?
5646 просмотра
5 ответа
Есть ли в R функция, позволяющая пользователю безопасно вводить пароль, например, getpass
модуль Python ?
(см. http://docs.python.org/library/getpass.html для примера того, что я имею в виду)
Автор: HamiltonUlmer Источник Размещён: 12.11.2019 09:40Ответы (5)
27 плюса
Проблема в том, что R не имеет функций для управления терминалом, в котором он работает (что-то вроде Rncurses
); Вероятно, это связано с проблемами переносимости.
Некоторое время назад я боролся с той же проблемой, и в результате я получил функцию, использующую TclTk:
getPass<-function(){
require(tcltk);
wnd<-tktoplevel();tclVar("")->passVar;
#Label
tkgrid(tklabel(wnd,text="Enter password:"));
#Password box
tkgrid(tkentry(wnd,textvariable=passVar,show="*")->passBox);
#Hitting return will also submit password
tkbind(passBox,"<Return>",function() tkdestroy(wnd));
#OK button
tkgrid(tkbutton(wnd,text="OK",command=function() tkdestroy(wnd)));
#Wait for user to click OK
tkwait.window(wnd);
password<-tclvalue(passVar);
return(password);
}
Конечно, это не будет работать в средах без GUI.
Автор: mbq Размещён: 23.06.2010 06:145 плюса
Очень простая концепция Linux для терминального безопасного пароля:
password <- function(prompt = "Password:"){
cat(prompt)
pass <- system('stty -echo && read ff && stty echo && echo $ff && ff=""',
intern=TRUE)
cat('\n')
invisible(pass)
}
Автор: seventm
Размещён: 20.07.2014 11:16
3 плюса
Мой пакет keyringr решает эту проблему путем извлечения паролей из базового набора ключей операционной системы (DPAPI в Windows, Keychain в OSX и Gnome Keyring в Linux).
Виньетка дает подробное объяснение о том , как использовать этот пакет, но если вы используете OSX и есть пароль , сохраненный в Keychain, вы можете использовать следующую команду , чтобы вернуть пароль к R (где mydb_myuser это имя элемент брелок):
install.packages("keyringr")
library("keyringr")
mypwd <- decrypt_kc_pw("mydb_myuser")
print(mypwd)
Автор: Josh Gilfillan
Размещён: 03.01.2017 01:37
3 плюса
Согласно m-dz в комментариях выше, теперь есть пакет для этого, называемый getPass , который имеет одну функцию getPass()
. Это замена для base::readline()
.
0 плюса
Вот всплывающее окно входа в систему, основанное на ? ModalDialog .
library("shiny")
shinyApp(
ui <- basicPage(
actionButton("login", "Login"),
verbatimTextOutput("secrets")
),
server <- function(input, output, session) {
vals <- reactiveValues(authenticated=FALSE)
passwordModal <- function(message=NULL) {
modalDialog(
textInput("username", "Username", input$username),
passwordInput("password", "Password", input$password),
if (!is.null(message)) div(tags$b(message, style="color: red;")),
footer = tagList(
modalButton("Cancel"),
actionButton("authenticate", "OK")
)
)
}
observeEvent(input$login, {
showModal(passwordModal())
})
observeEvent(input$authenticate, {
vals$authenticated <- FALSE
if (!is.null(input$username) && nzchar(input$username) &&
!is.null(input$password) && nzchar(input$password)) {
removeModal()
if (input$password == "letmein") {
vals$authenticated <- TRUE
} else {
showModal(passwordModal(message="Incorrect password!"))
}
} else {
showModal(passwordModal(message="Please fill in your username and password"))
}
})
output$secrets <- renderText({
if (vals$authenticated) {
paste("Don't tell anyone, ", input$username, ", but...", sep="")
} else {
"I can't tell you that!"
}
})
}
)
Автор: Steve Pitchers
Размещён: 08.06.2017 02:34
Вопросы из категории :
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- r Участки без заголовков / надписей в R
- input Пользовательский ввод и аргументы командной строки
- input Определить количество строк в текстовом файле
- input Канонический и неканонический ввод с терминала
- input Python читает один символ от пользователя
- input Автоматически использовать весь ввод в WPF
- passwords Отключить функцию браузера «Сохранить пароль»
- passwords Генерация случайных паролей
- passwords Как сгенерировать случайную строку в Ruby
- passwords Нужно ли вводить максимальную длину для паролей?
- passwords Какая хорошая альтернатива секретным вопросам?
- password-protection Чтение пароля из std :: cin
- password-protection Как избежать хранения паролей в управлении версиями?
- password-protection Способ безопасно дать пароль R приложения из терминала?
- password-protection Защита паролем каталога и всех его подпапок с использованием .htaccess
- password-protection SQLite с шифрованием / защитой паролем