3

我正在尝试使用 ssh api Jsch 从我的 java 应用程序(在我的 Windows 7 站上)在 unix 服务器中执行脚本 shell。

我正在使用“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();
    }

我得到的错误是

退出状态:-1 是什么意思

感谢您的帮助。

4

2 回答 2

1

我相信有问题

". ./start_lm.sh

它应该在当前目录中提供的脚本下方

"./start_lm.sh

正如退出状态127所说

127 "command not found" illegal_command 
于 2011-07-08T17:09:13.950 回答
0

字符串命令="/bin/sh /user/psi/start_lm.sh";

请尝试上述方法,因为 jsch 可能正在使用非交互式 shell。

于 2014-08-17T10:55:54.563 回答