Je veux exécuter un script à distance. Mais le système ne reconnaît pas le chemin. Il se plaint qu ‘”aucun fichier ou répertoire de ce type” ne m’utilise-t-il correctement?
ssh kev@server1 `./test/foo.sh`
Backticks exécute la commande sur le shell local et place les résultats sur la ligne de commande. Ce que vous dites est “exécuter ./test/foo.sh et passer ensuite la sortie comme si je l’avais saisie sur la ligne de commande ici”.
Essayez la commande suivante et assurez-vous que c’est le chemin depuis votre répertoire personnel sur l’ordinateur distant vers votre script.
ssh kev@server1 './test/foo.sh'
En outre, le script doit être sur l’ordinateur distant. Qu’est-ce que cela fait est essentiellement vous connecter à l’ordinateur distant avec la commande répertoriée comme votre shell. Vous ne pouvez pas exécuter un script local sur un ordinateur distant comme celui-ci (sauf s’il existe un truc amusant que je ne connais pas).
Ce que vous pouvez faire est.
ssh user@host 'bash -s' < /path/script.sh
Je ne sais pas s’il est possible de le faire comme ça.
Je le copie généralement avec scp, puis je me connecte pour l’exécuter.
scp foo.sh user@host:~ ssh user@host ./foo.sh
Si vous voulez exécuter un script local à distance sans enregistrer ce script à distance, vous pouvez le faire comme ceci:
cat local_script.sh | ssh user@remotehost 'bash -'
fonctionne comme un charme pour moi.
Je le fais même de Windows à Linux étant donné que MSys est installé sur votre ordinateur Windows.
Rendez le script exécutable par l’utilisateur “Kev” puis supprimez-le en cours d’exécution via la commande sh kev@server1 /test/foo.sh
J’ai pu appeler un script shell en utilisant cette commande:
ssh ${serverhost} "./sh/checkScript.ksh"
checkScript.ksh
sûr, checkScript.ksh
doit exister dans le répertoire $HOME/sh
.