1

我有一个可以通过 SSH 在 Linux 服务器上执行命令的应用程序。当我连接到 Solaris 服务器时,一切都无法正常工作。似乎 Solaris 命令行被限制为 267 个字符。

有没有办法改变这个?

更新:如前所述,这是对 Solaris (sh) 与 Linux (bash) 的默认 shell 的限制。那么,现在的问题是,有没有办法改变 sh 的限制?

4

5 回答 5

3

您可以使用以下命令查看当前命令的最大长度:

$ getconf ARG_MAX
1048320

我创建了一个脚本,可以确定远程命令的最大长度。正如克雷格建议的那样,如果可以的话,最好的办法是将命令输入标准输入。

于 2010-01-13T13:08:51.010 回答
2

我相信(尽管可能是错误的)这与您连接的默认 shell 有关。如果您在 Solaris 上对您在 Linux 上使用的相同 shell 进行更改,是否可以解决问题?

如果有更好的解决方案路线,请发表评论,我会更改我的答案。

于 2008-10-14T18:28:38.447 回答
1

在我看来,您的选择是:

  1. 通过更改用户的默认值来更改您在 Solaris 上使用的 shell。
  2. 不要更改 shell,而是更改运行命令的方式。

第一个很简单,但需要管理员对每个用户/机器组合进行更改,并且可能会影响其他程序。从长远来看,更改运行命令的方式会更快,也更容易维护。例如,假设您需要执行以下操作:

/usr/bin/foo with a very long list of options and parameters

现在你可能正在做这样的事情:

ssh user@machine "/usr/bin/foo with a very long list of options and parameters"

但您可以改为执行以下操作:

echo "/usr/bin/foo with a very long list of options and parameters" | \
ssh user@machine "/bin/bash"

这将做你想要的。

于 2008-10-14T18:59:47.963 回答
1

只需为用户更改 shell 解释器(编辑 /etc/passwd)或临时运行另一个 shell,例如。korn shell 如下:

serwer%

serwer% echo *

Arguments too long

serwer% ksh

$ echo *

file1

file2

....

file 10000

% exit

serwer%
于 2021-01-07T07:45:51.233 回答
0

当我在 Solaris 10 上运行 configure 并且 configure 脚本提供了一个命令行长度的数字时,答案通常在 256 KB 范围内。Solaris 上的标准 shell 肯定没有低于 300 字节的限制。

也就是说,我不确定你的问题是什么。我可能会猜测 Solaris SSH 的限制较短——我没有遇到过这个问题,但我倾向于使用 SSH 作为直接(交互)连接而不是运行长命令的一种方式。

于 2008-10-15T04:15:06.733 回答