remoto - sftp linux ejemplo
Ejecute el comando en el servidor remoto a través de ssh (2)
Estoy intentando ejecutar un comando en un servidor remoto de Linux a través de un comando ssh en un servidor local como este:
ssh myremoteserver ''type ttisql''
donde ttisql es un ejecutable en la ruta de mi máquina remota.
El resultado de ejecutar esto es:
bash: línea 0: tipo: ttisql: no encontrado
Cuando simplemente me conecto primero y hago:
ssh myremoteserver
y luego ingrese el comando:
[myuser @ myremoteserver ~] $: escriba ttisql
Recupero el camino del exe ttisql como era de esperar.
Lo extraño es que cuando ejecuto el primer comando en mi entorno beta funciona como se esperaba y devuelve la ruta del exe. En el escenario beta, la máquina A se conecta a la máquina remota B pero ambas máquinas están en el sitio y el comando ssh se conecta rápidamente a la máquina remota.
El problema se encuentra en nuestro entorno de producción cuando la máquina A es local y la máquina B está fuera del sitio y el comando ssh tarda uno o dos segundos en conectarse.
La única diferencia que puedo ver es el tiempo que tarda la producción ssh para conectarse. La ruta en el sistema remoto es correcta ya que el comando funciona si se ingresa después de la conexión inicial.
¿Alguien puede ayudarme a entender por qué este simple comando funcionaría en un entorno y no en el otro? ¿Podría el problema estar relacionado con el tiempo que lleva conectarse a través de ssh?
El entorno puede ser diferente en una sesión no interactiva ( ssh command
) desde una sesión interactiva ( ssh
, luego command
). Pruebe echo $PATH
en ambos casos.
ssh myremoteserver ''echo $PATH''
vs
ssh myremoteserver
[myuser@myremoteserver~]$: echo $PATH
Si difieren, busque en todas las secuencias de comandos de inicio algún comportamiento diferenciado basado en $PS1
o $-
Su PATH
se configura de manera diferente cuando su caparazón es interactivo (= cuando está conectado en el servidor), y cuando no es interactivo (ejecuta comandos con ssh
).
Mire en los archivos rc usados por su shell, por ejemplo .bashrc
, .bash_profile
, .profile
(depende de su sistema). Si configura PATH
en el lugar correcto, entonces ttisql
puede funcionar cuando lo ejecuta a través de ssh
.
Otra solución es usar la ruta absoluta de ttisql
, entonces no dependerá de la configuración de PATH
.