невозможно выполнить скрипт .sh с Jsch - PullRequest
3 голосов
/ 08 июля 2011

Я пытаюсь выполнить сценарий оболочки на сервере Unix из моего Java-приложения (на моей Windows 7 станции) с использованием SSH API JSCH.

оболочка сценария, которую я использую "start_lm", представляет собой двоичный файл C.

это код, который я использую (это пример с сайта Jsch)

      try{
      JSch jsch=new JSch();  

      Session session=jsch.getSession(user, host, 22);

      UserInfo ui=new MyUserInfo();
      session.setUserInfo(ui);
      session.connect();

      String command="user/psi/start_lm";

      Channel channel=session.openChannel("exec");
      ((ChannelExec)channel).setCommand(command);

      channel.setInputStream(null);

      ((ChannelExec)channel).setErrStream(System.err);

      InputStream in=channel.getInputStream();

      channel.connect();

      while(true){

        if(channel.isClosed()){
          System.out.println("exit-status: "+channel.getExitStatus());
          break;
        }
        try{Thread.sleep(1000);}catch(Exception ee){}
      }
      channel.disconnect();
      session.disconnect();
    }

ошибка, которую я получаю,

exit-status: -1 что это значит

спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Я полагаю, что есть проблема

". ./start_lm.sh

Это должно быть ниже предоставленного сценария, присутствующего в текущем каталоге

"./start_lm.sh

в качестве состояния выхода 127 говорит

127 "command not found" illegal_command 
0 голосов
/ 17 августа 2014

String command = "/ bin / sh /user/psi/start_lm.sh";

Пожалуйста, попробуйте выше, поскольку jsch может использовать неинтерактивную оболочку.

...