L'exécution des commandes linux sur java par JSch

Je suis l'établissement d'une connexion ssh à travers JSch sur java et tout semblait fonctionner correctement, jusqu'à ce que j'ai essayé de l'exécuter .sh fichier. Le script shell est le nom de repoUpdate.sh et c'est très simple:

echo  ' ****Repository update****'
echo  ' Location: /home/cissys/repo/'
echo -e ' Command: svn update /home/cissys/repo/2.3.0'

svn update /home/cissys/repo/2.3.0

C'est le résultat que j'obtiens directement sur la console linux avec la bonne réponse de la commande:

[cissys@dsatelnx5 ~]$ repoUpdate.sh
 ****Repository update****
 Location: /home/cissys/repo/
 Command: svn update /home/cissys/repo/2.3.0

At revision 9432.

Maintenant, voici le code java de ma méthode avec la connexion ssh qui essaie de les appeler ce même fichier

public void cmremove()
{
    try
    {
        JSch jsch = new JSch();
        Session session = jsch.getSession(user, host, port);
        UserInfo ui = new SUserInfo(pass, null);
        session.setUserInfo(ui);
        session.setPassword(pass);
        session.connect();

        ChannelExec channelExec = (ChannelExec)session.openChannel("exec");

        InputStream in = channelExec.getInputStream();

        channelExec.setCommand("./repoUpdate.sh");
        channelExec.connect();

        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String line;
        int index = 0;

        while ((line = reader.readLine()) != null)
        {
            System.out.println(++index + " : " + line);
        }

        channelExec.disconnect();
        session.disconnect();

        System.out.println("Done!");
    }
    catch(Exception e)
    {
        System.err.println("Error: " + e);
    }
}

Et la réponse que j'obtiens est le suivant:

run:
1 :  ****Repository update****
2 :  Location: /home/cissys/repo/
3 :  Command: svn update /home/cissys/repo/2.3.0
Done!
BUILD SUCCESSFUL (total time: 2 seconds)

avec aucune sortie ou des signes d'exécution sur la commande svn (À la révision 9432) que ce soit.

Je pense qu'il est peut-être la fermeture de la session à un certain point, de ne pas laisser la commande exécuter correctement. Si le updateRepo.sh fichier aurais eu quelque chose comme "cp test.txt test_2.txt", il le ferait sans problème. Mais je n'ai que ce problème avec cela et d'autres spécifiques .sh fichiers.

Toute aide serait appréciée.

(1) tabulation Verticale (\v) n'est pas un caractère commun, et je pouvais facilement imaginer qu'il cause des problèmes. Avez-vous essayé le script sans elle? (2) Quel est le but de la echo -n sans argument? N'est-ce pas un no-op?
ok. J'ai déjà changé le code pour que cela: echo ' ****Repository update****' echo ' Location: /home/cissys/repo/' echo -e ' Command: svn update /home/cissys/repo/2.3.0' svn update /home/cissys/repo/2.3.0 mais je suis toujours la même chose exacte de sortie sur la console linux et sur mon java de sortie :\
Avez-vous essayer de consommer de flux d'erreur? Juste pour voir si il ya un problème avec votre commande.
mais je n'obtiens pas d'erreur à tous
Mais si vous rencontrez cette sortie, qui semble être ok, quel est votre problème? Sincerally, je n'ai' entendu.

OriginalL'auteur Miguel Ángel | 2012-07-18