通过ssh在远程服务器上执行命令

jlt*_*ons 35 linux ssh shell

我试图通过本地服务器上的ssh命令在远程linux服务器上执行命令,如下所示:

ssh myremoteserver'type ttisql'

其中ttisql是我的远程机器路径上的可执行文件.

运行它的结果是:

bash:第0行:type:ttisql:not found

当我先简单连接并执行:

ssh myremoteserver

然后输入命令:

[myuser @ myremoteserver~] $:输入ttisql

正如我所料,我回到了ttisql exe的路径.

奇怪的是,当我在beta环境中执行第一个命令时,它按预期工作并返回exe的路径.在测试方案中,计算机A连接到远程计算机B,但两台计算机都在现场,ssh命令可以快速连接到远程计算机.

当机器A是本地机器且机器B不在现场并且ssh命令需要一两秒钟来连接时,在我们的生产环境中遇到问题.

我能看到的唯一区别是生产ssh连接所需的时间.远程系统上的路径是正确的,因为如果在初始连接后输入该命令,则该命令有效.

谁能帮助我理解为什么这个简单的命令可以在一个环境中工作而不是另一个环境?问题可能与通过ssh连接所需的时间有关吗?

dam*_*ois 25

ssh command交互式会话(ssh然后command)的非交互式会话()中,环境可以是不同的.尝试echo $PATH两种情况.

ssh myremoteserver 'echo $PATH'
Run Code Online (Sandbox Code Playgroud)

VS

ssh myremoteserver
[myuser@myremoteserver~]$: echo $PATH
Run Code Online (Sandbox Code Playgroud)

如果它们不同,请在所有启动脚本中查找基于$PS1或的某些差异化行为$-


Sto*_*ica 22

PATH是不同的设置,当你shell是交互式(=当您登录到服务器上),当没有互动(与运行命令ssh).

看看你的shell使用RC文件,例如.bashrc,.bash_profile,.profile(取决于你的系统).如果您设置PATH在正确的位置,那么ttisql当您通过它运行时可以工作ssh.

另一个解决方案是使用绝对路径ttisql,然后它将不依赖于您的PATH设置.