The answer here (https://stackoverflow.com/a/2732991/4752883) works great if you're trying to run a script on a remote linux
machine using plink
or ssh
. It will work if the script has multiple lines on linux
.
**However, if you are
trying to run a batch script located on a local linux/windows
machine and your remote machine is Windows
, and it consists of multiple lines using **
plink root@MachineB -m local_script.bat
it wont work.
Only the first line of the script will be executed. This is probably a
limitation of plink
.
Solution 1:
To run a multiline batch script (especially if it's relatively simple, consisting of a few lines):
If your original batch script is as follows
cd C:\Users\ipython_user\Desktop
python filename.py
you can combine the lines together using the "&&" separator as follows in your
local_script.bat
file as follows
https://stackoverflow.com/a/8055390/4752883:
cd C:\Users\ipython_user\Desktop && python filename.py
After this change, you can then run the script as pointed out here by
@JasonR.Coombs: https://stackoverflow.com/a/2732991/4752883
Solution 2:
If your batch script is relatively complicated, it may be better to use a batch
script which encapsulates the plink command as well as follows as pointed out
here by @Martin https://stackoverflow.com/a/32196999/4752883:
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