質問

SSHを介してLinuxサーバーでコマンドを正常に実行するアプリがあります。 Solarisサーバーに接続すると、動作しません。 Solarisコマンドラインは267文字に制限されているようです。

これを変更する方法はありますか

更新:前に指摘したように、これはSolaris(sh)とLinux(bash)のデフォルトシェルの制限です。では、shの制限を変更する方法はありますか?

役に立ちましたか?

解決

接続先のデフォルトシェルに関連していると思います(間違っているかもしれませんが)。 SolarisでLinuxで使用しているのと同じシェルに変更を加えた場合、問題は解決しますか?

ソリューションへのより良いルートがある場合はコメントしてください。回答を変更します。

他のヒント

このコマンドで現在のコマンドの最大長を確認できます:

$ getconf ARG_MAX
1048320

リモートコマンドの最大長を決定できるスクリプトを作成しました。 Craigが提案したように、あなたの最善の策は、コマンドを標準入力にパイプすることです(オプションの場合)。

おわかりのように、選択肢は次のとおりです。

  1. ユーザーのデフォルトを変更して、Solarisで使用するシェルを変更します。
  2. シェルを変更せず、コマンドの実行方法を変更します。

最初の方法は簡単ですが、管理者がユーザー/マシンの組み合わせごとに変更を加える必要があり、他のプログラムに影響を与える可能性があります。コマンドの実行方法を変更すると、より高速になり、長期的に維持しやすくなります。例として、次を実行する必要があるとします:

/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を使用する傾向があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top