Відповідь тут ( https://stackoverflow.com/a/2732991/4752883 ) чудово працює, якщо ви намагаєтеся запустити сценарій на віддаленій машині Linux за допомогою plink
або ssh
. Він буде працювати, якщо в скрипті буде кілька рядків linux
.
** Однак якщо ви намагаєтеся запустити пакетний скрипт, розташований на локальній
linux/windows
машині, а на віддаленій машині є Windows
, і він складається з декількох рядків за допомогою **
plink root@MachineB -m local_script.bat
звичайна робота.
Буде виконано лише перший рядок сценарію. Ймовірно, це обмеження plink
.
Рішення 1:
Для запуску багаторядкового пакетного сценарію (особливо якщо він відносно простий, що складається з декількох рядків):
Якщо ваш оригінальний пакетний сценарій такий
cd C:\Users\ipython_user\Desktop
python filename.py
ви можете об’єднати рядки разом, використовуючи роздільник "&&", як показано у вашому
local_script.bat
файлі:
https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
Після цієї зміни ви можете запустити сценарій, як зазначено тут, від @ JasonR.Coombs: https://stackoverflow.com/a/2732991/4752883 за допомогою:
`plink root@MachineB -m local_script.bat`
Рішення 2:
Якщо ваш пакетний сценарій порівняно складний, може бути краще використовувати пакетний скрипт, який інкапсулює команду plink, а також наступний, як зазначено тут @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