URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4783
[ Назад ]

Исходное сообщение
"Как вернуть результат выплнения внешней команды ?"

Отправлено dmitri , 29-Окт-05 17:58 
Озадачился недавно написанием скрипта чтобы он определял был ли изменен конфиг и если да то перезапускал апач, но надо бы проверить ситаксис конфига  
перед запуском делаю следующее:
#!/usr/bin/perl
my $output = system "/usr/local/sbin/apachectl -t";
print $output;

казалось чего проще но $output - пустая ничего нет, подскажите как это реализовать.

P.S. pliz подкажите


Содержание

Сообщения в этом обсуждении
"Как вернуть результат выплнения внешней команды ?"
Отправлено madskull , 29-Окт-05 18:33 
>Озадачился недавно написанием скрипта чтобы он определял был ли изменен конфиг и
>если да то перезапускал апач, но надо бы проверить ситаксис конфига
>
>перед запуском делаю следующее:
>#!/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`;


"Как вернуть результат выплнения внешней команды ?"
Отправлено dmitri , 29-Окт-05 19:50 
>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

т.е. не получается даже вывод перенаправить в файл, или я что-то не правильно делаю.


"Как вернуть результат выплнения внешней команды ?"
Отправлено madskull , 29-Окт-05 22:30 
>>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`;


"Как вернуть результат выплнения внешней команды ?"
Отправлено dmitri , 30-Окт-05 00:10 
>Ну, раз он не выводит в stdout, значит - в stderr
>my $output = `/usr/local/sbin/apachectl -t 2>&1`;

Огромное спасибо все работает.