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

我正在尝试通过本地服务器上的 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$-

的一些不同行为

https://stackoverflow.com/questions/19894962/

相关文章:

c++ - 当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

linux - 对一行的最后一个字段进行排序

c++ - 如何使用多个版本的 GCC

c++ - GLIBCXX 版本

linux - 用于 ssh 的类似 teamviewer 的工具?

c - 合并多个 .so 共享库

linux - 根据日期范围过滤日志文件条目

linux - 如何为 Linux、OS X、Windows 制作 Travis CI 测试包?

linux - 在Linux中使用空格设置环境变量

linux - 使用 find 和 -exec {},有没有办法计算总数?