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?

33
demandé sur jlteksolutions 2013-11-11 00:45:53

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.

21
répondu janos 2013-11-10 20:54:33

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 $-

24
répondu damienfrancois 2013-11-10 20:54:50