Je veux utiliser une commande sur ssh:
ssh myuser@myhost mycommand
mais cela va toujours avoir:
sh: mycommand: command not found
utiliser ci-après fonctionne évidemment:
ssh myuser@myhost /usr/local/bin/mycommand
et je comprends pourquoi: c'est parce que la commande est exécutée en quelque sorte sur une coque non-connexion.
L'utilisation de la commande complète ou de tout autre paramètre de ma commande SSH n'est pas une option dans mon scénario. Ma commande est exécutée par un script que je ne peux pas toucher et travailler sur chaque hôte, sauf celui-ci.
L'hôte qui me donne le problème est un synology NAS et le paramètre/etc/passwd pour cela Myuser est:
myuser:x:1048:100::/var/services/homes/myuser:/bin/sh
De nouveau:
Je peux:
Je ne peux que de vouloir:
Probablement, votre $PATH
n'inclut pas /usr/local/bin
. Comme c'est SSH, il y a trois approches qui me viennent à l'esprit:
Si PermitUserEnvironment
est activé dans la configuration SSHD, vous devriez être capable de définir PATH
in ~/.ssh/environment
(c'est un fichier dans votre répertoire personnel sur le serveur - le NAS).
Si vous pouvez modifier la configuration SSHD, vous devriez pouvoir utiliser SetEnv PATH=/bin:/usr/bin:/usr/local/bin
(etc.) pour définir un chemin. Au moins s'il utilise OpenSSH.
Il est possible que vous puissiez utiliser l'option SSH --Client'sSetEnv
Option pour envoyer un chemin de serveur, en fonction de la configuration du serveur. Vous pouvez définir ceci dans votre ~/.ssh/config
Fichier, sur votre ordinateur client.
Notez que les fichiers de serveur OpenSSH et de configuration du client peuvent avoir des options limitées à des clients/serveurs particuliers. Par exemple, dans la configuration du client, vous pouvez faire quelque chose comme ceci:
Host myhost
SetEnv PATH=/bin:/usr/bin:/usr/local/bin
pour le faire seulement pour un serveur. Notez que Block continue jusqu'à ce que le prochain bloc commence (E.G, une autre Host …
Block) - L'indentation est juste pour la clarté visuelle.
Les fichiers de configuration OpenSSH sont documentés dans le ssh_config
et sshd_config
pages manuelles.