Execute o comando shell no Tomcat
Então, eu tenho o seguinte problema: Eu tenho um serviço da web em execução dentro de um servidor Tomcat7 no Linux. O serviço da Web, no entanto, precisa executar alguns comandos (principalmente operações de arquivo, como cópia e montagem). Copiar eu substituí com java.nio, mas eu não acho que há um substituto paramount
.
Então, estou tentando executar comandos do shell do meu processo Java do Tomcat. Infelizmente não executa meus comandos. Eu já implementei a execução de comandos shell em Java antes. Então meu código deve estar correto:
Process pr = Runtime.getRuntime().exec("mount -o loop -t iso9660 <myimage> <mymountpoint>");
pr.waitFor();
<myimage>
e<mymountpoint>
são caminhos absolutos, então não há problemas também.
id
epwd
estão trabalhando!Eu tentei usar/bin/bash -c "<command>"
, o que não funcionou.Eu tentei executar um script de shell, que executa o comando, o que não funcionou.Eu tentei escapar dos espaços no meu comando, o que não funcionou.Então, eu investiguei ainda mais e agora estou suspeitando de alguma política de segurança do Tomcat (Caixa de areia?), o que me impede de executar o comando. Como segurança não é problema para mim (é um sistema interno, completamente isolado do mundo externo), eu tentei um hack, que se tornou bastante popular recentemente:
System.setSecurityManager(null);
Isso não funcionou também. Estou usando o Java7 e o Tomcat7 no RHEL6. Tomcat7 acabou de ser extraído! Eu não tenho nenhum arquivo em / etc / .. ou qualquer outra pasta que não seja / opt / tomcat /, onde extraí o zip da home page do Tomcat. Eu procurei na pasta / opt / tomcat / conf por configurações de segurança, mas tudo o que consegui encontrar foi o arquivo catalina.policy, onde não parecia que eu poderia definir algum nível de segurança para os comandos do shell.
Alguma ideia?