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 plink
hoặ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/windows
má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.bat
tệ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