我想从终端启动一个闪亮的应用程序,以避免阻塞rstudio控制台。
我的应用程序使用ssh包连接到远程计算机。
当我从rstudio启动应用程序时,会打开一个小窗口,要求我输入密码,但是当我从终端启动应用程序时,会收到错误消息。
$ "Rscript.exe" -e "shiny::runApp('app')"
Loading required package: shiny
Warning: package 'shiny' was built under R version 3.5.3
Warning: package 'ssh' was built under R version 3.5.3
Linking to libssh v0.8.6
Password callback did not return a string value
Erreur : Authentication with ssh server failed
Stopped
app.R
library(shiny)
library(ssh)
ssh.session <- ssh::ssh_connect(host = host)
cat("*** Logging in of the session ***")
# Define UI for application that draws a histogram
ui <- fluidPage()
server <- function(input, output) {
onStop(function() {
ssh_disconnect(ssh.session)
cat("*** Logging out of the session ***")
})
}
# Run the application
shinyApp(ui = ui, server = server)
答案 0 :(得分:0)
我不知道您的用例中的安全必要性...
您可以做的(如果可以的话,在调用Rscript时可以指定密码)是在调用RScript
时将密码作为附加参数提供,然后转发给ssh_connect()
。您也可以对主机变量执行相同的操作。我通过以下方式调用此R文件:
Rscript --vanilla home/user/R/app.R "password"
我没有运行shiny::runApp
,因为shinyApp(ui=ui, server=server)
行将自动启动闪亮的应用程序,从而使我们能够预先连接到ssh。
在app.R文件中,我们将参数转发到ssh_connect。
app.R
library(shiny)
library(ssh)
args <- commandArgs(trailingOnly = TRUE)
host="host"
ssh.session <- ssh::ssh_connect(host = host,passwd = )
cat("*** Logging in of the session ***")
# Define UI for application that draws a histogram
ui <- fluidPage()
server <- function(input, output) {
onStop(function() {
ssh_disconnect(ssh.session)
cat("*** Logging out of the session ***")
})
}
# Run the application
shinyApp(ui = ui, server = server)