¿Cómo ejecutar un script de shell local en un servidor remoto a través de SSH?

Respuestas:

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

-s hace que bash lea desde la entrada estándar.

Si necesita pasar argumentos a su script:

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

Tenga en cuenta el guión doble --(que significa el final de las opciones de comando) y las comillas alrededor de los argumentos.

phoibos
fuente
Tendré que recordar eso. Háganos saber si eso funcionó para usted y no olvide marcar la respuesta como aceptada si lo hizo.
Argusvision
3
No necesita -s, y solo necesita bashsi realmente quiere forzar el uso bash. Por lo general, puedes simplementessh user@remotehost < local_script.sh
janos
1
¿Qué pasa si el script local tiene operandos?
kmassada 05 de
Tengo un script que necesita argumentos, por ejemplo, "sh setup.sh arg1 arg2 arg3" cómo ejecutarlo
Amarjit Singh
4

La respuesta de phoibos es el trabajo para mí.

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

Pero debe asegurarse de que su script explícitamente llame a exit o permanecerá conectado al servidor remoto después de la ejecución del script.

Para ser breve, no olvide poner esto al final de local_script.sh:

exit 0
mickours
fuente