Озадачился недавно написанием скрипта чтобы он определял был ли изменен конфиг и если да то перезапускал апач, но надо бы проверить ситаксис конфига
перед запуском делаю следующее:
#!/usr/bin/perl
my $output = system "/usr/local/sbin/apachectl -t";
print $output;казалось чего проще но $output - пустая ничего нет, подскажите как это реализовать.
P.S. pliz подкажите
>Озадачился недавно написанием скрипта чтобы он определял был ли изменен конфиг и
>если да то перезапускал апач, но надо бы проверить ситаксис конфига
>
>перед запуском делаю следующее:
>#!/usr/bin/perl
>my $output = system "/usr/local/sbin/apachectl -t";
>print $output;
>
>казалось чего проще но $output - пустая ничего нет, подскажите как это
>реализовать.
>
>P.S. pliz подкажитеsystem отдает код возврата программы.
чтобы получить результат работы, надо использовать обратные кавычки.
my $output = `/usr/local/sbin/apachectl -t`;
>system отдает код возврата программы.
>чтобы получить результат работы, надо использовать обратные кавычки.
>my $output = `/usr/local/sbin/apachectl -t`;Да, если использовать другю команду, т.е. не apachectl, а что нибудь типа ls, но в случае с apachectl результат не возвращятся (если не верите попробуйте сами). Можно даже так:
host#/usr/local/sbin/apachectl -t >> /tmp/apache_result.txt,
host#ls -l /tmp/apache_result.txt
-rw-r--r-- 1 root root 0 Oct 29 19:46 apache_result.txtт.е. не получается даже вывод перенаправить в файл, или я что-то не правильно делаю.
>>system отдает код возврата программы.
>>чтобы получить результат работы, надо использовать обратные кавычки.
>>my $output = `/usr/local/sbin/apachectl -t`;
>
>Да, если использовать другю команду, т.е. не apachectl, а что нибудь типа
>ls, но в случае с apachectl результат не возвращятся (если не
>верите попробуйте сами). Можно даже так:
>
>host#/usr/local/sbin/apachectl -t >> /tmp/apache_result.txt,
>host#ls -l /tmp/apache_result.txt
>-rw-r--r-- 1 root root 0 Oct
>29 19:46 apache_result.txt
>
>т.е. не получается даже вывод перенаправить в файл, или я что-то не
>правильно делаю.Ну, раз он не выводит в stdout, значит - в stderr
my $output = `/usr/local/sbin/apachectl -t 2>&1`;
>Ну, раз он не выводит в stdout, значит - в stderr
>my $output = `/usr/local/sbin/apachectl -t 2>&1`;Огромное спасибо все работает.