A resposta aqui ( link ) funciona muito bem se você está tentando executar um script em um linux remoto
máquina usando plink
ou ssh
. Ele funcionará se o script tiver várias linhas em linux
.
** No entanto, se você
tentando executar um script em lote localizado em uma máquina local linux/windows
e sua máquina remota é Windows
e consiste em várias linhas usando **
plink root@MachineB -m local_script.bat
não funciona.
Apenas a primeira linha do script será executada. Este é provavelmente um
limitação de plink
.
Solução 1:
Para executar um script em lotes de várias linhas (especialmente se for relativamente simples, consistindo em algumas linhas):
Se o seu script em lote original é o seguinte
cd C:\Users\ipython_user\Desktop
python filename.py
você pode combinar as linhas usando o "& &" separador da seguinte forma em seu
local_script.bat
da seguinte forma
link :
cd C:\Users\ipython_user\Desktop && python filename.py
Após essa alteração, você pode executar o script como indicado aqui por
@ JasonR.Coombs: link
Solução 2:
Se o seu script em lote for relativamente complicado, talvez seja melhor usar um lote
script que encapsula o comando plink, bem como segue, como indicado
aqui por @Martin link :
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