Executar arquivo remoto

pessoal estou usando o seguinte codigo para executar um arquivo remoto em outra máquina.

porem o mesmo executa na minha

[code]public class Teste {

/**  
 * @param args  
 * @throws InterruptedException 
 */   
public static void main(String[] args) throws InterruptedException {   
    Process p = null;
	int status = 0;
	try{       
           p = Runtime.getRuntime().exec("//nomedoPC/c$/temp/arquivo.exe");       
           if(p.exitValue()==0){       
              System.out.println("Programa terminou normalmente");    
              
           }       
        }catch(Exception e){       
        	status = p.waitFor();
        }     
        String s = (status == 0 ? "ok" : "nao");
}
}

Sem querer desanimar…

Mas tô achando que esta sua idéia tem grandes chances de não dar certo.

Porque se a sua máquina (onde está sendo executado esse programa) tiver acesso a outra máquina (onde esta o arq. a ser executado) o que irá acontecer é que o arquivo será transferido (a instancia dele) para a sua máquina onde se dará a execução.

Que eu saiba o que permite vc fazer isto são os softwares do tipo VMWare, MetaFrame,o windows também uma módulo para conexão em àrea de trabalho remota e etc…

É isso mesmo que vc está querendo?

flws

Se quiser executar remotamente um programa, depende do sistema operacional que está rodando na máquina remota.

Se a máquina remota roda Unix ou Linux, você pode usar um “remote shell” (rsh).

Se for Windows, é bem mais complicado, conforme disse o Fantomas.

galera no windows eu consigo executar usando o psexec (remotamente)

em java eu consigo copiar o arquivo da maquina origem para a maquina destino remotamente
porem nao consigo executar na máquina destino apenas na origem

alguma idea?

Vou arriscar um chute…

Pelo que eu percebi esse tal de PsExec [quote]http://technet.microsoft.com/pt-br/sysinternals/bb897553(en-us).aspx[/quote] dá para ser executado em linha de comando (nunca usei isso). Então, pode ser que vc consiga fazer o seguinte:

Runtime.getRuntime().exec("psexec //nomeDoOutroMicro -s arquivo.exe");

Mesmo que isso funcione, vai depender muito do que vc espera disto como resultado.

flws

cara consegui usei o psexec com array

:smiley:

Rickpm,

Estou com o mesmo problema, voce pode postar o código usando o psexec co array?

Grata

[quote=claudeneg] Rickpm,

Estou com o mesmo problema, voce pode postar o código usando o psexec co array?

Grata[/quote]

a resposta do fantomas funciona certinho:

   1. Runtime.getRuntime().exec("psexec //nomeDoOutroMicro -s arquivo.exe");  

:smiley:

Malhuco,

Grata pela resposta, mas este código retorna o seguinte erro:

java.io.IOException: Cannot run program “psexec”: CreateProcess error=2, The system cannot find the file specified

Estou trabalhando com o seguinte cenário:

  • A aplicação está em uma intranet.

  • para abrir o arquivo estava usando o código: Runtime.getRuntime().exec("SHELL32.DLL,ShellExec_RunDLL " + “k:\arquivos\ nomeArquivo” );

  • A maquina cliente acessa a aplicação do servidor corretamente, mas ao abrir um arquivo disponivel na rede (de uma outra maquina), cujo caminho já está especificado na aplicação, o mesmo abre no servidor onde a aplicação está disponivel ao invés de abrir na maquina cliente.

Toda ajuda é bem vinda.

você precisar ter na sua maquina o psexec

baixe o pacote: http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

em seguida descompacte no seu diretório c:\windows

Infelizmente é muito burocratico a instalação de qualquer aplicação ou processo onde trabalho.

Pesquisando um pouco mais, achei esse post http://www.guj.com.br/posts/list/42851.java, onde mostra um código para download de arquivo. Testei e funcionou exatamente como eu precisava, ou seja agora o usuário em uma maquina cliente, consegue abrir o arquivo de qualquer lugar da intranet pela aplicação.

Obrigada pela ajuda.