Exécuter la commande sur le serveur distant via ssh
J'essaie d'exécuter une commande sur un serveur linux distant via une commande ssh sur un serveur local comme ceci:
SSH myremoteserver 'type ttisql'
Où ttisql est un exécutable sur le chemin de ma machine distante.
Le résultat de l'exécution est:
Bash: ligne 0: type: ttisql: non trouvé
Quand je me connecte simplement en premier et fais:
SSH myremoteserver
Puis entrez le commande:
[myuser@myremoteserver~]$: tapez ttisql
Je récupère le chemin de l'exe ttisql comme je m'y attendais.
La chose étrange est que lorsque j'exécute la première commande dans mon environnement bêta, cela fonctionne comme prévu et renvoie le chemin de l'exe. Dans le scénario bêta, la machine A se connecte à la machine distante B mais les deux machines sont sur place et la commande ssh se connecte rapidement à la machine distante.
Le problème est rencontré dans notre production environnement lorsque la machine a est locale et que la machine B est hors site et que la commande ssh prend une ou deux secondes pour se connecter.
La seule différence que je peux voir est le temps qu'il faut au SSH de production pour se connecter. Le chemin sur le système distant est correct puisque la commande fonctionne si elle est entrée après la connexion initiale.
Quelqu'un peut-il m'aider à comprendre pourquoi cette commande simple fonctionnerait dans un environnement et non dans l'autre? Le problème pourrait-il être lié au temps nécessaire pour se connecter via ssh?
2 réponses
Votre PATH
est configuré différemment lorsque votre shell est interactif (= lorsque vous êtes connecté sur le serveur), et lorsqu'il n'est pas interactif (commandes en cours d'exécution avec ssh
).
, Regardez dans la rc fichiers utilisés par votre shell, par exemple .bashrc
, .bash_profile
, .profile
(dépend de votre système). Si vous définissez PATH
au bon endroit, alors ttisql
peut fonctionner lorsque vous l'exécutez via ssh
.
Une autre solution consiste à utiliser le chemin absolu de ttisql
, alors cela ne dépendra pas de votre configuration PATH
.
L'environnement peut être différent dans une session non interactive (ssh command
) d'une session interactive (ssh
, puis command
). Essayez echo $PATH
dans les deux cas.
ssh myremoteserver 'echo $PATH'
Vs
ssh myremoteserver
[myuser@myremoteserver~]$: echo $PATH
S'ils diffèrent, recherchez dans tous les scripts de démarrage un comportement différencié basé sur $PS1
ou $-