无法使用Jsch执行.sh脚本

时间:2011-07-08 16:54:34

标签: java shell jsch

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

我使用“start_lm”的脚本shell是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含义是什么

感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

我认为存在问题

". ./start_lm.sh

它应该是当前目录中提供的脚本

"./start_lm.sh

作为退出状态127

127 "command not found" illegal_command 

答案 1 :(得分:0)

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

请尝试以上操作,因为jsch可能正在使用非交互式shell。