Die Antwort hier ( https://stackoverflow.com/a/2732991/4752883 ) funktioniert hervorragend, wenn Sie versuchen, ein Skript auf einem entfernten Linux-Rechner auszuführen, indem Sie plink
o ssh
. Es funktioniert, wenn das Skript mehrere Zeilen auf linux
.
**Wenn Sie jedoch versuchen, ein Batch-Skript auszuführen, das sich auf einem lokalen linux/windows
Rechner und Ihr entfernter Rechner ist Windows
und es besteht aus aus mehreren Zeilen mit **
plink root@MachineB -m local_script.bat
wird nicht funktionieren.
Nur die erste Zeile des Skripts wird ausgeführt. Dies ist wahrscheinlich eine Einschränkung von plink
.
Lösung 1:
Um ein mehrzeiliges Batch-Skript auszuführen (vor allem, wenn es relativ einfach ist, bestehend aus ein paar Zeilen):
Wenn Ihr ursprüngliches Batch-Skript folgendermaßen aussieht
cd C:\Users\ipython_user\Desktop
python filename.py
können Sie die Zeilen mit dem Trennzeichen "&&" wie folgt in Ihrem local_script.bat
Datei: https://stackoverflow.com/a/8055390/4752883 :
cd C:\Users\ipython_user\Desktop && python filename.py
Nach dieser Änderung können Sie dann das Skript ausführen, wie es hier von @JasonR.Coombs: 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 vielleicht besser, ein Batch-Skript zu verwenden Skript zu verwenden, das auch den Plink-Befehl kapselt, wie es hier von @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
7 Stimmen
Die gleiche Frage wurde bereits auf serverfault gestellt: serverfault.com/questions/215756/ Es hat also wahrscheinlich keinen Sinn, diese Frage zu migrieren.
9 Stimmen
Auf die Frage zu Server Fault gibt es allerdings nicht so viele Antworten. Vielleicht sollte diese Frage diese ersetzen.
5 Stimmen
Mir persönlich gefällt diese Antwort: unix.stackexchange.com/questions/87405/
27 Stimmen
Außerdem sollte es natürlich zum Thema passen, da ssh ein wichtiges Werkzeug für die Softwareentwicklung ist.
1 Stimmen
@tripleee, danke, dass Sie mich daran erinnern, eine "Wiedereröffnungs"-Stimme abzugeben.
5 Stimmen
Kaffee- und ssh-Fragen haben nicht den gleichen Grad an Off-Topicness auf SO. Ich habe für die Wiedereröffnung gestimmt.
0 Stimmen
Kann sich jemand zum ENDSSH-Tag äußern, bitte?
1 Stimmen
@adam-lear, ich denke, diese Frage sollte geöffnet werden. Ich habe die Frage so geändert, dass sie zu Stackoverflow passt. Die beliebteste Antwort hier funktioniert nicht wirklich, wenn man versucht, ein lokales Skript auf einem entfernten Widows-Rechner auszuführen und wenn es mehrere Zeilen hat. Ich habe einen Weg gefunden, und würde die Lösung gerne zur Verfügung stellen. Auch wenn es einen anderen Beitrag auf serverfault gibt, werden die meisten Leute wegen der Popularität dieser Frage hierher kommen, so dass es für die Besucher sehr hilfreich ist, sicherzustellen, dass diese Frage auf dem neuesten Stand ist.
1 Stimmen
@alpha_989 Das ist fair. Ich habe diese Frage in meinen noch nicht ganz zwei Monaten als Community-Moderator einseitig geschlossen. Das ist kein Berg, auf dem ich jetzt sterben möchte :) Ich werde sie wieder öffnen, obwohl das keine Garantie dafür ist, dass sie offen bleibt, wenn die Community im Allgemeinen nicht damit einverstanden ist. Wenn es wieder geschlossen wird, schlage ich vor, es zu Meta-Stapelüberlauf für eine Diskussion.