充分利用shell命令Java代码响应(Getting response from shell co

2019-10-29 21:36发布

我使用SSH net.neoremind.sshxcute的Java API库连接到SFTP服务器,并执行本该服务器上的shell脚本。

我的Shell脚本确实从SFTP位置文件移动到HDFS位置在其它机器上的一个简单的工作。

目前,还没有办法报告如果任何文件都不会移动,由于某种原因,如连接失败,非法名字的文件,空文件等。

我不知道,我怎么能显示的每个信息组从shell命令失败的文件回迁Java代码?

这是我的示例代码:

// e.g sftpScriptPath => /abc/xyz
// sftpScriptCommand => sudo ./move.sh
// arguments => set of arguments to shell script.
task = new ExecShellScript(sftpScriptPath, sftpScriptCommand, arguments);
result = m_SshExec.exec(task);
if(result.isSuccess && result.rc == 0)
{
     isSuccessful = true;
     s_logger.info("Shell script executed successfully");
     s_logger.info("Return code : " + result.rc);
     s_logger.info("Sysout : " + result.sysout);
}
else
{
     isSuccessful = false;
     s_logger.info("Shell script execution failed");
     s_logger.info("Return code : " + result.rc);
     s_logger.info("Sysout : " + result.sysout);
}

Answer 1:

的结果从所返回的对象exec方法调用包括:

  • 退出状态或返回代码( Result.rc
  • 标准输出(stdout)( Result.sysout ),
  • 标准错误(错误)( Result.error_msg ),和
  • 成功的指示, 基于返回代码并输出 ( Result.isSuccess )。

所以,如果你正在致力于用执行shell脚本的当前方法sshxcute框架,那么最简单的方法是将有move.sh脚本提供关于任何失效信息,而移动文件。 这可以通过的返回代码和标准输出(stdout)和/或标准错误(错误)消息的组合来完成。 然后,您的Java代码将获得从返回该信息结果的对象。



文章来源: Getting response from shell command to Java code