Linux サーバーで SSH 経由でコマンドを実行するアプリがあります。Solaris サーバーに接続すると、うまくいきません。Solaris のコマンド ラインは 267 文字に制限されているようです。
これを変更する方法はありますか?
更新: 前に指摘したように、これは Solaris (sh) と Linux (bash) のデフォルト シェルの制限です。では、問題は、sh の制限を変更する方法はありますか?
Linux サーバーで SSH 経由でコマンドを実行するアプリがあります。Solaris サーバーに接続すると、うまくいきません。Solaris のコマンド ラインは 267 文字に制限されているようです。
これを変更する方法はありますか?
更新: 前に指摘したように、これは Solaris (sh) と Linux (bash) のデフォルト シェルの制限です。では、問題は、sh の制限を変更する方法はありますか?
次のコマンドを使用すると、現在のコマンドの最大長を確認できます。
$ getconf ARG_MAX
1048320
リモート コマンドの最大長を決定できるスクリプトを作成しました。Craig が示唆したように、オプションである場合は、コマンドを標準入力にパイプするのが最善の策です。
接続しているデフォルトのシェルに関連していると思います(間違っているかもしれませんが)。SolarisでLinuxで使用しているのと同じシェルに変更を加えた場合、問題は解決しますか?
解決策へのより良いルートがあればコメントしてください、そして私は私の答えに変更を加えます。
私が見ているように、あなたの選択肢は次のとおりです。
1 つ目は簡単ですが、ユーザーとマシンの組み合わせごとに管理者が変更を加える必要があり、他のプログラムに影響を与える可能性があります。コマンドの実行方法を変更すると、より高速になり、長期的には保守が容易になります。例として、以下を実行する必要があるとします。
/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 を実行し、configure スクリプトがコマンド ラインの長さの数値を表示すると、通常、答えは 256 KB の範囲になります。Solaris の標準シェルには、300 バイト未満の制限がありません。
とはいえ、あなたの問題が何であるかはわかりません。Solaris SSH の制限が短いと推測する危険があります。問題に遭遇したことはありませんが、長いコマンドを実行するのではなく、直接 (対話的に) 接続する方法として SSH を使用する傾向があります。