通过 Plink 打开 SSH 隧道,通过命令行批处理文件打开 运行 R 脚本
Open SSH tunnel via Plink and run R Scripts via command line batch file
我正在尝试通过命令行中的 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
。
- 在
R.exe
完成后,使用 killtask
命令终止后台 plink
进程。
- 您可能还应该在 运行
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
我正在尝试通过命令行中的 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
。 - 在
R.exe
完成后,使用killtask
命令终止后台plink
进程。 - 您可能还应该在 运行
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