我有一个应用程序通过SSH在Linux服务器上执行命令就好了。当我连接到Solaris服务器时,事情不起作用。似乎Solaris命令行限制为267个字符。

有没有办法改变这个?

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

有帮助吗?

解决方案

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

如果有更好的解决方案,请发表评论,我会在答案中做出改变。

其他提示

使用此命令可以看到当前命令长度最大值:

$ getconf ARG_MAX
1048320

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

在我看来,你的选择是:

  1. 通过更改用户的默认值,更改在Solaris上使用的shell。
  2. 不要更改shell,而是更改运行命令的方式。
  3. 第一种方法很简单,但需要管理员对每个用户/机器组合进行更改,并可能影响其他程序。从长远来看,更改运行命令的方式将更快,更容易维护。例如,假设您需要执行以下操作:

    /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"
    

    这将做你想要的。

当我在Solaris 10上运行configure并且配置脚本出现了命令行长度的数字时,答案通常在256 KB范围内。 Solaris上的标准shell肯定没有300字节以下的限制。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top