Ограничение командной строки для Solaris

StackOverflow https://stackoverflow.com/questions/202234

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть приложение, которое отлично выполняет команды на сервере Linux через SSH.Когда я подключаюсь к серверу Solaris, что-то не работает.Похоже, что командная строка Solaris ограничена 267 символами.

Есть ли способ изменить это?

Обновить:Как указывалось ранее, это ограничение для оболочки по умолчанию для Solaris (sh) против Linux (bash).Итак, теперь вопрос в том, есть ли способ изменить лимит для sh?

Это было полезно?

Решение

Я полагаю (хотя могу ошибаться), что это связано с оболочкой по умолчанию, к которой вы подключаетесь.Если вы внесете изменения в Solaris в ту же оболочку, которую используете в Linux, решит ли это проблему?

Пожалуйста, прокомментируйте, есть ли лучший путь к решению, и я внесу изменения в свой ответ.

Другие советы

С помощью этой команды вы можете увидеть максимальную длину вашей текущей команды:

$ getconf ARG_MAX
1048320

Я создал скрипт, который может определите максимальную длину удаленной команды.Как предположил Крейг, лучше всего перевести команду в стандартный формат, если это возможно.

Насколько я понимаю, ваш выбор таков:

  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"

Это сделает то, что вы хотите.

Когда я запускаю configure в Solaris 10 и скрипт configure выдает цифру длины командной строки, ответ обычно находится в диапазоне 256 КБ.Стандартные оболочки в Solaris, безусловно, не имеют ограничения менее 300 байт.

Тем не менее, я не уверен, в чем ваша проблема.Я мог бы рискнуть предположить, что SSH Solaris имеет более короткий лимит - я не сталкивался с этой проблемой, но я склонен использовать SSH как способ прямого (интерактивного) подключения, а не для выполнения длинных команд.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top