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

Исходное сообщение
"CGI: вывод STDOUT"

Отправлено orphan , 01-Дек-04 09:21 
Есть CGI скрипт, нужно вывести в браузер результат работы программы:

open(FILE, "sasldblistusers2 |");

while(<FILE>) {
  print;
}

close(FILE);

Каким образом это можно сделать?


Содержание

Сообщения в этом обсуждении
"CGI: вывод STDOUT"
Отправлено sly , 01-Дек-04 10:10 
кури perldoc CGI или добавь в начале скрипта
print "Content-type: text/html\n";
print "Pragma: no-cache\n";
print "\n";

>Есть CGI скрипт, нужно вывести в браузер результат работы программы:
>
>open(FILE, "sasldblistusers2 |");
>
>while(<FILE>) {
>  print;
>}
>
>close(FILE);
>
>Каким образом это можно сделать?



"CGI: вывод STDOUT"
Отправлено orphan , 01-Дек-04 10:31 
>кури perldoc CGI или добавь в начале скрипта
Я не курю :О)

>print "Content-type: text/html\n";
>print "Pragma: no-cache\n";
>print "\n";
Прошу прощения, неправильно описал проблему. Все эти строчки есть и есть работающий скрипт, но ожидаемого эффекта от того кода, который описал выше, к сожалению нет. Видимо, нужно что-то курить насчет STDOUT или чего еще? Пробовал уже и в массив запихивать, но толку нет - все равно результат не выводится.


"CGI: вывод STDOUT"
Отправлено sly , 01-Дек-04 12:28 
bash-2.04# cat q.cgi
#!/usr/bin/perl -w

use strict;

print "Content-type: text/html\n";
print "Pragma: no-cache\n";
print "\n";

open (CMD, "echo hui |");

print <CMD>;

close (CMD);

>>кури perldoc CGI или добавь в начале скрипта
>Я не курю :О)
>
>>print "Content-type: text/html\n";
>>print "Pragma: no-cache\n";
>>print "\n";
>Прошу прощения, неправильно описал проблему. Все эти строчки есть и есть работающий
>скрипт, но ожидаемого эффекта от того кода, который описал выше, к
>сожалению нет. Видимо, нужно что-то курить насчет STDOUT или чего еще?
>Пробовал уже и в массив запихивать, но толку нет - все
>равно результат не выводится.



"CGI: вывод STDOUT"
Отправлено artem , 01-Дек-04 10:59 
>Есть CGI скрипт, нужно вывести в браузер результат работы программы:
>
>open(FILE, "sasldblistusers2 |");
>
>while(<FILE>) {
>  print;
>}
>
>close(FILE);
>
>Каким образом это можно сделать?

То есть просто вывести содержимое файла? :)

#!/usr/bin/perl

print "Content-type: text/html\n";
open(FILE, "sasldblistusers2");
while ($i=<FILE>){
print $i;
}
close (FILE);


"CGI: вывод STDOUT"
Отправлено orphan , 01-Дек-04 11:06 
>То есть просто вывести содержимое файла? :)
>#!/usr/bin/perl
>
>print "Content-type: text/html\n";
>open(FILE, "sasldblistusers2");
>while ($i=<FILE>){
>print $i;
>}
>close (FILE);
sasldblistusers2 это не файл - это команда, мне нужно вернуть результат выполнения команды open(FILE, "sasldblistusers2  |");
В shell результат выводится, а вот в браузер нет.

"CGI: вывод STDOUT"
Отправлено StingFire , 01-Дек-04 11:41 

>print "Content-type: text/html\n";

print "Content-type: text/html\n\n";

>команды open(FILE, "sasldblistusers2  |");

open(FILE, "/usr/sbin/sasldblistusers2 2>&1 |");


"CGI: вывод STDOUT"
Отправлено orphan , 01-Дек-04 12:11 
>print "Content-type: text/html\n\n";
>open(FILE, "/usr/sbin/sasldblistusers2 2>&1 |");
Это перенаправляет стандартный поток ошибок, но мне нужен результат работы - список пользователей.

"CGI: вывод STDOUT"
Отправлено orphan , 02-Дек-04 07:38 
Разобрался в чем дело, вывода результата работы не было из-за отсутствия самого результата. Команду надо было запускать из под root. Сделал через open(FILE, "sudo sasldblistusers2  |"), хотя этот способ рисковый.
Большое спасибо всем кто отвечал!