A resposta aqui ( https://stackoverflow.com/a/2732991/4752883 ) funciona muito bem se você estiver tentando executar um script em uma máquina Linux remota usando plink
or ssh
. Funcionará se o script tiver várias linhas ativadas linux
.
** No entanto, se você estiver tentando executar um script em lote localizado em uma linux/windows
máquina local
e sua máquina remota estiver Windows
, ela consistirá em várias linhas usando **
plink root@MachineB -m local_script.bat
não vai funcionar.
Somente a primeira linha do script será executada. Esta é provavelmente uma limitação de plink
.
Solução 1:
Para executar um script em lotes com várias linhas (especialmente se for relativamente simples, consistindo em algumas linhas):
Se o script em lote original for o seguinte
cd C:\Users\ipython_user\Desktop
python filename.py
você pode combinar as linhas usando o separador "&&" da seguinte maneira no seu
local_script.bat
arquivo:
https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
Após essa alteração, você poderá executar o script conforme indicado aqui por @ JasonR.Coombs: https://stackoverflow.com/a/2732991/4752883 com:
`plink root@MachineB -m local_script.bat`
Solução 2:
Se o seu script em lote for relativamente complicado, pode ser melhor usar um script em lote que encapsule o comando plink, bem como a seguir, conforme indicado aqui por @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