Je veux exécuter un script à distance. Mais le système ne reconnaît pas le chemin. Il se plaint que "aucun fichier ou répertoire de ce type" ne l'utilise-t-il pas?
ssh kev@server1 `./test/foo.sh`
Les Backticks exécuteront la commande sur le shell local et mettront les résultats sur la ligne de commande. Ce que vous dites, c'est 'exécutez ./test/foo.sh puis transmettez le résultat comme si je l'avais tapé sur la ligne de commande ici'.
Essayez la commande suivante et assurez-vous que c’est le chemin de votre répertoire personnel de l’ordinateur distant vers votre script.
ssh kev@server1 './test/foo.sh'
En outre, le script doit être sur l'ordinateur distant. Cela vous connecte essentiellement à l'ordinateur distant avec la commande répertoriée en tant que votre shell. Vous ne pouvez pas exécuter un script local sur un ordinateur distant comme ceci (à moins que quelque truc amusant que je ne connaisse pas).
Ce que tu peux faire, c'est.
ssh user@Host 'bash -s' < /path/script.sh
Si vous souhaitez exécuter un script local à distance sans l'enregistrer à distance, vous pouvez le faire comme suit:
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.
Je ne sais pas s'il est possible de l'exécuter comme ça.
D'habitude, je le copie d'abord avec scp, puis me connecte pour l'exécuter.
scp foo.sh user@Host:~
ssh user@Host
./foo.sh
Rendez le script exécutable par l'utilisateur "Kev" puis supprimez le test exécuté à l'aide de la commande sh kev@server1 /test/foo.sh
J'ai pu appeler un script shell à l'aide de cette commande:
ssh ${serverhost} "./sh/checkScript.ksh"
bien entendu, checkScript.ksh
doit exister dans le répertoire $HOME/sh
.