Jak uruchomić lokalny skrypt powłoki na zdalnym serwerze za pośrednictwem SSH?

Odpowiedzi:

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

-s sprawia, że ​​bash jest czytany ze standardowego wejścia.

Jeśli musisz przekazać argumenty do skryptu:

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

Zwróć uwagę na podwójny myślnik --(oznaczający koniec opcji polecenia) i cudzysłowy wokół argumentów.

phoibos
źródło
Będę musiał to pamiętać. Daj nam znać, czy to zadziałało, i nie zapomnij zaznaczyć odpowiedzi jako zaakceptowanej, jeśli tak się stało.
Argusvision
3
Nie potrzebujesz -si potrzebujesz tylko, bashjeśli naprawdę chcesz wymusić użycie bash. Zwykle możesz po prostussh user@remotehost < local_script.sh
janos
1
co jeśli skrypt lokalny ma operandy?
kmassada,
Mam skrypt, który potrzebuje argumentów, np. „Sh setup.sh arg1 arg2 arg3” jak go wykonać
Amarjit Singh
4

odpowiedź phoibos działa dla mnie.

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

Musisz jednak upewnić się, że skrypt wyraźnie wywołuje polecenie exit, w przeciwnym razie po wykonaniu skryptu pozostaniesz zalogowany na serwerze zdalnym.

Krótko mówiąc, nie zapomnij umieścić tego na końcu local_script.sh:

exit 0
mickours
źródło