Execução de programa remoto por SSH2 + Java

Olá, estou tentando criar uma aplicação que executa outra aplicação dentro de um servidor linux por SSH (usando o ganymed SSH2) , porém estou tendo problemas com o path.

sess.execCommand("/bin/sh -c java -jar /etc/atualizacaoFB/atualizafb.jar ");

A aplicação a ser executada no servidor remoto é Java também, e na hora de executar eu recebo a seguinte mensagem:

O path está configurado para incluir o diretorio bin do java dentro do arquivo /etc/profile. Se eu conecto por ssh na maquina com um cliente SSH (putty) eu consigo rodar a aplicação tranquilamente. Agora se eu tento automatizar isto fazendo com que um programa execute a aplicação no servidor remoto o path fica desconfigurado e da esse erro.

Alguem conheçe uma solução para isto?

Obrigado.

[quote=Sephirot]Olá, estou tentando criar uma aplicação que executa outra aplicação dentro de um servidor linux por SSH (usando o ganymed SSH2) , porém estou tendo problemas com o path.

sess.execCommand("/bin/sh -c java -jar /etc/atualizacaoFB/atualizafb.jar ");

A aplicação a ser executada no servidor remoto é Java também, e na hora de executar eu recebo a seguinte mensagem:

O path está configurado para incluir o diretorio bin do java dentro do arquivo /etc/profile. Se eu conecto por ssh na maquina com um cliente SSH (putty) eu consigo rodar a aplicação tranquilamente. Agora se eu tento automatizar isto fazendo com que um programa execute a aplicação no servidor remoto o path fica desconfigurado e da esse erro.

Alguem conheçe uma solução para isto?

Obrigado.[/quote]
Tentou passar o caminho completo para o aplicativo? Que tal deixar esse “caminho completo para o aplicativo” configurável externamente via um arquivo de configuração por exemplo?

Inté.

não seria muito útil pois existem vários servidores… o IP e usuário de cada servidor fica numa base de dados, mas ai eu teria que guardar também o caminho para o java de cada servidor…
não me parece a melhor solução.
Eu vi que quando eu altero o PATH no arquivo /etc/environment fica certinho…as variáveis de ambiente são carregadas corretamente e eu consigo executar o programa java.

Alguem sabe me dizer a diferença deste arquivo para o .bashrc e /etc/profile ?

É necessário realmente o “/bin/sh -c” no início? Creio que isso possa estar atrapalhando (ele pode entender o -jar como argumento do /bin/sh).

Tente executar somente:

sess.execCommand("java -jar /etc/atualizacaoFB/atualizafb.jar");

/etc/profile -> system-wide .profile file for the Bourne shell (sh(1)) and Bourne compatible shells (bash(1), ksh(1), ash(1), …). É usado para os shells de login de todos os usuários

~/.profile -> executed by the command interpreter for login shells. Shells de login daquele usuário específico. Não é levado em consideração caso ~/.bash_profile ou ~/.bash_login existam.

~/.bash_logout -> executed by bash(1) when login shell exits. Usado no logout para cada usuário.

~/.bashrc -> executed by bash(1) for non-login shells. Usado no início de shells que não são de login (específico para cada usuário).