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.