我正在使用JSch exec来执行远程服务器上的shell脚本,使用这里提供的有用示例。我可以看到来自脚本的回显,并且最后的退出状态为0-所以乍一看一切都很好。
然而,问题在于脚本本身调用其他脚本,而这些脚本似乎完全被忽略了,直接跳过了。
脚本直接调用其他脚本。也就是说,脚本的第一行类似于:
有没有人能给我建议,帮助我解决这个问题?我开始研究了“shell”通道而不是“exec”,但在我的情况下可能比较棘手,因为在让用户访问系统之前,服务器会呈现一个表单(姓名、号码、登录原因等)供填写 - 我还没有能够以编程的方式填写和提交此表单,所以如果可能的话,我想坚持使用exec。
我对这些都很新,请各位大佬帮帮我!
以下是代码片段。正如我所说,这似乎有效,但代码中代表“scriptFileName”的sh脚本会调用其他sh脚本,但这些脚本没有被执行。
非常感谢您提前的任何帮助,J
然而,问题在于脚本本身调用其他脚本,而这些脚本似乎完全被忽略了,直接跳过了。
脚本直接调用其他脚本。也就是说,脚本的第一行类似于:
script_two.sh
有没有人能给我建议,帮助我解决这个问题?我开始研究了“shell”通道而不是“exec”,但在我的情况下可能比较棘手,因为在让用户访问系统之前,服务器会呈现一个表单(姓名、号码、登录原因等)供填写 - 我还没有能够以编程的方式填写和提交此表单,所以如果可能的话,我想坚持使用exec。
我对这些都很新,请各位大佬帮帮我!
以下是代码片段。正如我所说,这似乎有效,但代码中代表“scriptFileName”的sh脚本会调用其他sh脚本,但这些脚本没有被执行。
非常感谢您提前的任何帮助,J
JSch jsch = new JSch();
JSch.setConfig(FileTransferConstants.STRICT_HOST_KEY_CHECKING, "no");
Session session = jsch.getSession(username, hostIPAddress, port);
session.setPassword(password);
session.connect();
//create the execution channel over the session
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
channelExec.setCommand(scriptFileName);
channelExec.connect();