无法使用 Jsch 执行 .sh 脚本
我正在尝试使用 ssh api Jsch 从我的 java 应用程序(在我的 Windows 7 工作站上)在 unix 服务器中执行脚本 shell。
我使用的脚本 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();
}
我收到的错误是
exit-status: -1 这意味着什么,
感谢您的帮助。
i'm trying to execute a script shell in a unix server from my java application (on my windows seven station) using the ssh api Jsch.
the script shell i'm using "start_lm" is a C binary.
this is the code i'm using (it's from the Jsch website exemples)
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();
}
the error i'm getting is
exit-status: -1 what does it mean
thanks for ure help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为存在问题,
它应该位于当前目录中提供的脚本下方
,退出状态
127
表示There's the problem I believe
It should be below provided script present in current directory
as exit status
127
says字符串命令=“/bin/sh/user/psi/start_lm.sh”;
请尝试上述操作,因为 jsch 可能使用非交互式 shell。
String command="/bin/sh /user/psi/start_lm.sh";
Please try the above, for jsch might be using an non-interactive shell.