La risposta qui ( https://stackoverflow.com/a/2732991/4752883 ) funziona benissimo se stai cercando di eseguire uno script su una macchina Linux remota usando plink
o ssh
. Funzionerà se lo script ha più righe linux
.
** Tuttavia, se si sta tentando di eseguire uno script batch situato su un linux/windows
computer locale
e il computer remoto lo è Windows
, ed è composto da più linee usando **
plink root@MachineB -m local_script.bat
non funzionerà.
Verrà eseguita solo la prima riga dello script. Questo è probabilmente un limite di plink
.
Soluzione 1:
Per eseguire uno script batch multilinea (soprattutto se è relativamente semplice, composto da poche righe):
Se lo script batch originale è il seguente
cd C:\Users\ipython_user\Desktop
python filename.py
puoi unire le linee usando il separatore "&&" come segue nel tuo
local_script.bat
file:
https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
Dopo questa modifica, è quindi possibile eseguire lo script come indicato qui da @ JasonR.Coombs: https://stackoverflow.com/a/2732991/4752883 con:
`plink root@MachineB -m local_script.bat`
Soluzione 2:
Se lo script batch è relativamente complicato, potrebbe essere meglio utilizzare uno script batch che incapsuli il comando plink e come indicato qui di seguito da @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