Comment exécuter un script shell local sur un serveur distant via SSH?

Réponses:

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

-s fait lire bash à partir de l'entrée standard.

Si vous devez transmettre des arguments à votre script:

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

Notez le double tiret --(signifiant la fin des options de commande) et les guillemets autour des arguments.

phoibos
la source
Je dois m'en souvenir. Veuillez nous faire savoir si cela a fonctionné pour vous, et n'oubliez pas de marquer la réponse comme acceptée si c'est le cas.
Argusvision
3
Vous n'avez pas besoin -s, et vous n'avez besoin que bashsi vous voulez vraiment forcer l'utilisation bash. Habituellement, vous pouvez simplementssh user@remotehost < local_script.sh
janos
1
que faire si le script local a des opérandes?
kmassada
J'ai un script qui a besoin d'arguments, par exemple "sh setup.sh arg1 arg2 arg3" comment l'exécuter
Amarjit Singh
4

la réponse de phoibos est le travail pour moi.

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

Mais vous devez être sûr que votre script appelle explicitement exit ou vous resterez connecté au serveur distant après l'exécution du script.

Pour être bref, n'oubliez pas de mettre ceci à la fin de local_script.sh:

exit 0
mickours
la source