Die Antwort hier ( https://stackoverflow.com/a/2732991/4752883 ) funktioniert hervorragend, wenn Sie versuchen, ein Skript auf einem Remote-Linux-Computer mit plink
oder auszuführen ssh
. Es funktioniert, wenn das Skript mehrere Zeilen enthält linux
.
** Wenn Sie jedoch versuchen, ein Batch-Skript auszuführen, das sich auf einem lokalen
linux/windows
Computer und auf Ihrem Remotecomputer befindet Windows
, besteht es aus mehreren Zeilen mit **
plink root@MachineB -m local_script.bat
wird nicht funktionieren.
Es wird nur die erste Zeile des Skripts ausgeführt. Dies ist wahrscheinlich eine Einschränkung von plink
.
Lösung 1:
So führen Sie ein mehrzeiliges Batch-Skript aus (insbesondere wenn es relativ einfach ist und aus wenigen Zeilen besteht):
Wenn Ihr ursprüngliches Batch-Skript wie folgt lautet
cd C:\Users\ipython_user\Desktop
python filename.py
Sie können die Zeilen mithilfe des Trennzeichens "&&" wie folgt in Ihrer local_script.bat
Datei kombinieren
:
https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
Nach dieser Änderung können Sie das Skript wie hier von @ JasonR.Coombs beschrieben ausführen: https://stackoverflow.com/a/2732991/4752883 mit:
`plink root@MachineB -m local_script.bat`
Lösung 2:
Wenn Ihr Batch-Skript relativ kompliziert ist, ist es möglicherweise besser, ein Batch-Skript zu verwenden, das den Befehl plink sowie die folgenden Anweisungen enthält : @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