我正在尝试使用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含义是什么
感谢你的帮助。
答案 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。