Olá…
Hummm: Faces.util. … sua aplicação roda num servidor web?
Olha… nunca tentei fazer algo deste tipo, mas imagino que uma aplicação web não teria permissão de alterar arquivos, ou propriedades dos arquivos no servidor web… seria um grande furo de segurança.
Vamos ver se mais alguém já testou algo semelhante.
Realmente fazer um chmod 777 é algo que não é correto. Mas enfim, vamos ao que interessa, seu código.
Hmm, você está rodando uma aplicação web, pelo que noto, não é? Enfim, chmod 777 apenas o root ou o dono do arquivo pode fazer. Então com qual usuário você está tentando executar tal comando? O java executa o comando com o mesmo usuário que subiu a aplicação.
Então Garcia… eu abandonei… fiz por ftp mesmo, acho que a JVM restringe qualquer comando de transferência de arquivos pela rede… pois o sh funcionava beleza para criar diretório “mkdir”, mas para fazer o “sshpass” ele passava direto… não executava… E eu tinha os dois comandos no mesmo arquivo…
Então eu parti para transferência por ftp e foi tranquilinho… não me arrependo… hehe
Vou dar uma olhada no link que me passaste!! Valew
Eu não gosto de usar comandos no sistema operacional porque você deixa sua aplicação “nada portável”. Aqui na empresa tem funcionário que usa windows, outro linux… assim podemos rodar os aplicativos em qualquer estação.
Agora entendi que você quer apenas enviar arquivos para outra máquina. Então te indico usar o jakarta commons-net. Se não me engano ele permite fazer FTP over SSL.
estou com o mesmo problema do dahenz, executo um script shell mas ele não funciona. Meu script deveria executar outros scripts, que executam uma série de processos que rodam paralelamente e por aí vai …
quando executo ele “na mão” ele funciona, quando executo no Java nada …
o mais engraçado, quando sigo os mesmos passos para executar um simples “ls” funciona …
public String exec( ){
String s = null;
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec("/home2/alan/users/bruno/mcga/run/execute");
InputStream i = p.getInputStream();
BufferedReader reader = new BufferedReader( new InputStreamReader(i) );
s = reader.readLine();
} catch (Exception e) {
log.error("Erro ao tentar iniciar o processo: " + e);
}
return s;
}