Jawabannya di sini ( https://stackoverflow.com/a/2732991/4752883 ) berfungsi dengan baik jika Anda mencoba menjalankan skrip pada mesin linux jarak jauh menggunakan plink
atau ssh
. Ini akan berfungsi jika skrip memiliki beberapa baris aktif linux
.
** Namun, jika Anda mencoba menjalankan skrip batch yang terletak di linux/windows
mesin lokal
dan mesin jarak jauh Anda Windows
, dan itu terdiri dari beberapa baris menggunakan **
plink root@MachineB -m local_script.bat
tidak akan bekerja.
Hanya baris pertama skrip yang akan dieksekusi. Ini mungkin batasan plink
.
Solusi 1:
Untuk menjalankan skrip kumpulan multiline (terutama jika itu relatif sederhana, terdiri dari beberapa baris):
Jika skrip batch asli Anda adalah sebagai berikut
cd C:\Users\ipython_user\Desktop
python filename.py
Anda dapat menggabungkan garis-garis tersebut bersama-sama menggunakan pemisah "&&" seperti berikut dalam local_script.bat
file Anda
:
https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
Setelah perubahan ini, Anda kemudian dapat menjalankan skrip seperti yang ditunjukkan di sini oleh @ JasonR.Coombs: https://stackoverflow.com/a/2732991/4752883 dengan:
`plink root@MachineB -m local_script.bat`
Solusi 2:
Jika skrip batch Anda relatif rumit, mungkin lebih baik menggunakan skrip batch yang merangkum perintah plink dan juga seperti yang ditunjukkan di sini oleh @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