Wie führe ich ein lokales Shell-Skript auf einem Remote-Server über SSH aus?

Antworten:

16
ssh user@remotehost "bash -s" < local_script.sh

-s Lässt Bash von der Standardeingabe lesen.

Wenn Sie Argumente an Ihr Skript übergeben müssen:

ssh user@remotehost "bash -s" -- < local_script.sh "your_arg" "--aswitch" "avalue"

Beachten Sie den doppelten Bindestrich --(der das Ende der Befehlsoptionen kennzeichnet) und die Anführungszeichen um die Argumente.

Phoibos
quelle
Das muss ich mir merken. Bitte teilen Sie uns mit, ob dies bei Ihnen funktioniert hat, und vergessen Sie nicht, die Antwort als akzeptiert zu markieren, wenn dies der Fall ist.
Argusvision
3
Sie brauchen es nicht -sund Sie brauchen es nur, bashwenn Sie es wirklich erzwingen wollen bash. Normalerweise können Sie einfachssh user@remotehost < local_script.sh
Janos
1
Was ist, wenn das lokale Skript Operanden hat?
kmassada
Ich habe ein Skript, das Argumente benötigt, zB "sh setup.sh arg1 arg2 arg3", wie es ausgeführt wird
Amarjit Singh
4

Phoibos Antwort ist die Arbeit für mich.

ssh user@remotehost "bash -s" < local_script.sh

Sie müssen jedoch sicherstellen, dass Ihr Skript explizit exit aufruft, sonst bleiben Sie nach der Skriptausführung auf dem Remote-Server angemeldet.

Um es kurz zu machen, vergessen Sie nicht, dies am Ende von local_script.sh:

exit 0
Mickours
quelle