我正在尝试通过本地服务器上的 ssh 命令在远程 linux 服务器上执行命令,如下所示:
ssh myremoteserver 'type ttisql'
其中 ttisql 是我的远程机器路径上的可执行文件。
运行结果是:
bash: line 0: type: ttisql: not found
当我简单地先连接并执行以下操作时:
ssh myremoteserver
然后输入命令:
[myuser@myremoteserver~]$: type ttisql
如我所料,我找回了 ttisql exe 的路径。
奇怪的是,当我在我的 beta 环境中执行第一个命令时,它按预期工作并返回 exe 的路径。在 beta 场景中,机器 A 正在连接到远程机器 B,但两台机器都在现场,并且 ssh 命令快速连接到远程机器。
当机器A在本地而机器B在异地并且ssh命令需要一两秒才能连接时,我们的生产环境中遇到了问题。
我能看到的唯一区别是生产 ssh 连接所需的时间。远程系统上的路径是正确的,因为如果在初始连接后输入该命令即可。
谁能帮我理解为什么这个简单的命令可以在一个环境中工作而不是在另一个环境中工作?问题是否与通过 ssh 连接所需的时间有关?
最佳答案
非交互式 session (ssh 命令
)和交互式 session (ssh
,然后是command
)中的环境可能不同。在这两种情况下都尝试 echo $PATH
。
ssh myremoteserver 'echo $PATH'
对
ssh myremoteserver
[myuser@myremoteserver~]$: echo $PATH
如果它们不同,请在所有启动脚本中查找基于 $PS1
或 $-
关于linux - 通过 ssh 在远程服务器上执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19894962/