Câu trả lời ở đây ( https://stackoverflow.com/a/2732991/4752883 ) hoạt động rất tốt nếu bạn đang cố chạy tập lệnh trên máy linux từ xa bằng cách sử dụng plinkhoặc ssh. Nó sẽ hoạt động nếu tập lệnh có nhiều dòng trênlinux .
** Tuy nhiên, nếu bạn đang cố chạy một tập lệnh bó nằm trên một linux/windowsmáy cục bộ
và máy từ xa của bạn Windows, và nó bao gồm nhiều dòng sử dụng **
plink root@MachineB -m local_script.bat
sẽ không làm việc
Chỉ dòng đầu tiên của tập lệnh sẽ được thực thi. Đây có lẽ là một hạn chế củaplink .
Giải pháp 1:
Để chạy tập lệnh bó đa dòng (đặc biệt nếu nó tương đối đơn giản, bao gồm một vài dòng):
Nếu tập lệnh bó ban đầu của bạn như sau
cd C:\Users\ipython_user\Desktop
python filename.py
bạn có thể kết hợp các dòng lại với nhau bằng cách sử dụng dấu phân cách "&&" như sau trong local_script.battệp của mình
:
https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
Sau khi thay đổi này, bạn có thể chạy tập lệnh như được chỉ ra ở đây bởi @ JasonR.Coombs: https://stackoverflow.com/a/2732991/4752883 với:
`plink root@MachineB -m local_script.bat`
Giải pháp 2:
Nếu tập lệnh bó của bạn tương đối phức tạp, có thể tốt hơn là sử dụng tập lệnh bó để đóng gói lệnh plink cũng như được chỉ ra ở đây bởi @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