batch-file - 通过Plink打开SSH隧道,并通过命令行批处理文件运行R脚本

标签 batch-file ssh cmd plink

我试图在命令行中通过Plink打开SSH隧道以运行一些R脚本,但我无法让R脚本运行,并且当它们运行时未创建隧道,因此与我的数据库的连接崩溃。

Plink代码如下所示:

plink.exe -ssh [username]@[hostname] -L 3307:127.0.0.1:3306 -i "[SSH key]" -N

后跟运行R脚本的代码
"C:\Program Files\R\R-3.2.1\bin\x64\R.exe" CMD BATCH qidash.R

我似乎无法让隧道保持打开状态以运行R脚本。但是,我可以单独打开隧道并运行代码。

最佳答案

我假设您在批处理文件中有两个命令,如下所示:

plink.exe -ssh [username]@[hostname] -L 3307:127.0.0.1:3306 -i "[SSH key]" -N
"C:\Program Files\R\R-3.2.1\bin\x64\R.exe" CMD BATCH qidash.R

那么确实R.exe永远不会执行,因为plink.exe无限期地运行。

您必须并行运行命令:
  • 您可以使用start命令在后台运行plink.exe
  • killtask完成后,使用plink命令杀死后台R.exe进程。
  • 您可能还应该在运行R.exe之前稍作停顿,以允许Plink建立隧道。

  • rem Open tunnel in the background
    start plink.exe -ssh [username]@[hostname] -L 3307:127.0.0.1:3306 -i "[SSH key]" -N
    
    rem Wait a second to let Plink establish the tunnel 
    timeout /t 1
    
    rem Run the task using the tunnel
    "C:\Program Files\R\R-3.2.1\bin\x64\R.exe" CMD BATCH qidash.R
    
    rem Kill the tunnel
    taskkill /im plink.exe
    

    关于batch-file - 通过Plink打开SSH隧道,并通过命令行批处理文件运行R脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193256/

    相关文章:

    laravel - Vagrant 失败与Laravel : 'The SSH command responded with a non-zero exit status'

    java - 7zip 命令行 - 创建可执行 jar

    windows - 什么脚本(比如 .bat)可以在 windows、mac 和 linux 上运行

    MySQL 从批处理文件创建数据库/用户

    linux - Grep 并运行批处理

    ssh - Apache MINA SSHD - 连接到服务器时的身份验证方法问题

    unix - 使用远程登录/命令的 SSH

    python - 检查通过 python cmd 模块传递的参数

    python - 如何创建批量剪切音频的方法?

    bash - 脚本自动将文件从 PC (Windows) 上传到 Linux 服务器,然后重命名它们