2009-06-25 6 views

Antwort

40

Backticks werden den Befehl für die lokale Shell ausführen und die Ergebnisse in die Befehlszeile eingeben. Was Sie sagen, ist 'execute ./test/foo.sh und dann übergeben Sie die Ausgabe, als ob ich es auf der Kommandozeile hier eingegeben hatte'.

Versuchen Sie den folgenden Befehl, und stellen Sie sicher, dass das der Pfad von Ihrem Ausgangsverzeichnis auf dem Remotecomputer zu Ihrem Skript ist.

ssh [email protected] './test/foo.sh' 

Auch das Skript muss auf dem Remotecomputer sein. Das bedeutet, dass Sie sich im Wesentlichen mit dem aufgelisteten Befehl als Shell in den Remote-Computer einloggen. Sie können kein lokales Skript auf einem Remote-Computer wie diesem ausführen (es sei denn, es gibt einen lustigen Trick, den ich nicht kenne).

+12

Hier ist der Spaß Trick, von http://wpkg.org/Executing_local_programs_and_scripts_remotely genommen: cat/usr/bin/program | ssh user @ server "cat>/tmp/programm; chmod 755/tmp/programm;/tmp/programm --argumente" –

+1

Ja, ich dachte, sowas wäre möglich, aber du führst nicht wirklich ein lokales Programm aus, du Kopieren Sie es einfach unnötig kompliziert. Wenn Sie das tun, können Sie einfach scp /path/to/script.sh Benutzer @ Server: && ssh Benutzer @ Server ./script.sh Ich denke, Sie müssen ein Passwort zweimal auf diese Weise eingeben , also eh. – psanf

+0

@MarkRushakoff, danke dafür. Genau das, was ich brauchte! – Dan

121

Was Sie tun können, ist.

ssh [email protected] 'bash -s' < /path/script.sh 
+1

Danke - für mich auf MediaTemple, separaring die Zeichenfolge wie dies einschließlich der 'bash -s' Argument war was ich brauchte. Vielen Dank! – itsricky

+2

Verknüpfen Sie einfach, wie dies in Perl als Referenz zu tun: http://stackoverflow.com/questions/18236988/execute-perl-script-on-remote-server-from-local-machine – arun

+2

Große Lösung! Überprüfen Sie diese Lösung über 'ssh2' Modul für Knoten: https: //gist.github.com/mscdex/7c9f8358b8331ea567b7 – knownasilya

0

Machen Sie das Skript ausführbar durch den Benutzer „Kev“ und dann das Entfernen versuchen, es durch den Befehl ausführen sh [email protected] /test/foo.sh

0

konnte ich ein Shell-Skript mit diesem Befehl aufzurufen:

ssh ${serverhost} "./sh/checkScript.ksh" 

natürlich checkScript.ksh muss in $HOME/sh Verzeichnis vorhanden sein.

0

Wenn Sie lokale Skript ausführen möchten remote ohne das Skript Speichern der Ferne können Sie es wie folgt tun:

cat local_script.sh | ssh [email protected] 'bash -' 

wirkt wie ein Zauber für mich.

Ich mache das sogar von Windows zu Linux, da Sie MSys auf Ihrem Windows-Computer installiert haben.

Verwandte Themen