Ограничение командной строки для Solaris
-
03-07-2019 - |
Вопрос
У меня есть приложение, которое отлично выполняет команды на сервере Linux через SSH.Когда я подключаюсь к серверу Solaris, что-то не работает.Похоже, что командная строка Solaris ограничена 267 символами.
Есть ли способ изменить это?
Обновить:Как указывалось ранее, это ограничение для оболочки по умолчанию для Solaris (sh) против Linux (bash).Итак, теперь вопрос в том, есть ли способ изменить лимит для sh?
Решение
Я полагаю (хотя могу ошибаться), что это связано с оболочкой по умолчанию, к которой вы подключаетесь.Если вы внесете изменения в Solaris в ту же оболочку, которую используете в Linux, решит ли это проблему?
Пожалуйста, прокомментируйте, есть ли лучший путь к решению, и я внесу изменения в свой ответ.
Другие советы
С помощью этой команды вы можете увидеть максимальную длину вашей текущей команды:
$ getconf ARG_MAX
1048320
Я создал скрипт, который может определите максимальную длину удаленной команды.Как предположил Крейг, лучше всего перевести команду в стандартный формат, если это возможно.
Насколько я понимаю, ваш выбор таков:
- Измените, какую оболочку вы используете в Solaris, изменив значение по умолчанию для пользователя.
- Не меняйте оболочку, но измените способ выполнения команд.
Первый из них прост, но требует от администратора внесения изменений для каждой комбинации пользователь / машина и может повлиять на другие программы.Изменение способа выполнения команд будет быстрее и проще в обслуживании в долгосрочной перспективе.В качестве примера предположим, что вам нужно выполнить следующее:
/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 как способ прямого (интерактивного) подключения, а не для выполнения длинных команд.