Рейтинг:0

проверка синтаксиса httpd из сценария оболочки

флаг kz

не мог найти это нигде, в том числе на этих досках. кажется странным, что никто раньше не сталкивался с такой же потребностью. это должно иметь очень простой ответ.

пытаясь поставить httpd -t вывод в переменную сценария оболочки. перепробовал все возможные варианты, которые я знаю. такие вещи, как:

r=`httpd -t` или r=$(httpd -t)

даже пробовал:

для я в `httpd -t`

любая другая "нормальная" команда оболочки, например датировать или же лси т. д. работает, но я не могу заставить этот простой вывод быть помещенным в переменную - не имеет значения, является ли вывод ошибкой, предупреждением или просто «Синтаксис в порядке».

по сути, я просто хочу иметь сценарий оболочки, который гарантирует, что любые программные изменения в конфигурации httpd не испортят конфигурацию перед перезапуском сервера. я отказываюсь верить, что это невозможно с помощью сценария оболочки...

Благодарю.

Рейтинг:1
флаг pl

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

г=$(https -t 2>&1)

Вышеупомянутое соберет оба стандартный вывод и стдерр вывод. Если вы хотите только стдерр без стандартный вывод, вам нужно сделать что-то вроде этого:

r=$(https -t 2>&1 > /dev/null)

Однако на самом деле вам не нужен текстовый вывод, чтобы делать то, что вы хотите. Если все, что вам нужно знать, это есть ошибка или нет, вы должны просто проверить код возврата. Если конфигурация безошибочна, она вернет 0, если есть ошибка, она вернет другое число. От человек страница для httpd:

Запускайте синтаксические тесты только для файлов конфигурации. Программа немедленно завершает работу после этих тестов анализа синтаксиса либо с кодом возврата 0 (Синтаксис в порядке), либо с кодом возврата, не равным 0 (Синтаксическая ошибка).

флаг kz
@moche спасибо за ответ. httpd -t не возвращает никаких кодов ошибок.просто такие вещи, как «Синтаксис в порядке» или «AH00526: Синтаксическая ошибка в строке 60....», но ни один из них не может быть проверен, поскольку он не может быть сохранен. попробую редирект. Благодарю.
флаг pl
@pottyear Я только что добавил цитату из руководства, в которой говорится о кодах возврата. Если вы не знаете, как использовать коды возврата, см. пример https://stackoverflow.com/a/26675771/829970.
флаг kz
Спасибо за это

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.