Jump to content


Photo

Perl/Cgi X Browser


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 Justino

Justino

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:Pimenta Bueno RO

Posted 18/01/2011, 18:43

Olá pessoal!

Estou tentando fazer um gerenciador de atualizações de um sistema web, utilizando Perl e CGI.
No entanto sou novato na área principalmente em Linux e estou tendo algumas dificuldades.

Já procurei incansavelmente mas não achei um tópico claro para um modelo do que eu necessito.

é o seguinte: Inicialmente necessito de criar um script perl/CGI que se comunica com o shell do Linux pelo browser.
essa é a dificuldade. Pelo Browser. Criei um script simples com o objetivo de parar o tomcat por exemplo.
Criei um arquivo index.html dentro da pasta public_html com um link para o arquivo tomcat.cgi que está dentro de cgi-bin.
Não existe problema algum quanto a configuração do apache, eu acho, pois segui a risca alguns tutoriais de instalação e rodou scripts simples.
O problema é que quando executo o arquivo pelo terminal existe a comunicação com o shell e realmente o tomcat starta, no entanto
quando rodo no browser o script cai na segunda condição mas o aparentemente está funcionando mas não existe a interação com o shell do linux
pois o toncat ainda continua parado.
Fiz um script teste.sh que cria uma pasta para testar e tento rodar ele através do perl.
Ex: dentro do código perl coloco exec ou system ("./home/*/pasta/teste.sh"). Rodo diretamente no terminal dá certo,
mas no browser não.

Alguém poderia me ajudar. Não sei se isso seria possível. Desde já eu agradeço!


#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);#Mostra os erros
use Shell;
print "Content-type:text/html\r\n\r\n";
	system ("./usr/bin/tomcat-manager start");
	if ($? == -1){
  		print "O comando Falhou: $> ";
	}
	else{
		print "<html>";
		print "<head>";
		print "<title>Pagina de Teste!!!</title>";
		print "</head>";
		print "<body>";
 		print "O comando saiu com o valor% d", $? >> 8;
		print "<h2>Funcionou!</h2>";
		print "</body>";
		print "</html>";
}

Bom pessoal, ainda continuo na pesquisa por isso.

Estou com a ideia de que este problema é genérico, inclusive no php.

Segundo pesquisei disseram que quando executo pelo terminal tenho permissões root para executar o comando, mas
quando executo pelo browser tenho as definições do usuário apache. Então óbvio terei que configurar o apache para
ter permissões de execução de tais comandos.

Desculpe minha arrogância, mas não sei como configurá-lo para isso.


Ainda não sei se esta é uma solução possível de realizar meu objetivo.

percebi que listar arquivos com retorno no browser realmente dá certo como um system("ls -l"), mas se eu for tentar
executar um shell Script por exemplo não tenho resultado. Eu não quero um retorno e sim que execute apena uma tarefa.

Continuarei pesquisando. Caso encontrar a solução, postarei aqui. Ficarei mais grato ainda se alguém puder me ajudar.

Edição feita por: Justino, 18/01/2011, 10:22.





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq