Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取shell命令对Java代码的响应_Java_Api_Shell_Unix_Ubuntu - Fatal编程技术网

获取shell命令对Java代码的响应

获取shell命令对Java代码的响应,java,api,shell,unix,ubuntu,Java,Api,Shell,Unix,Ubuntu,我正在使用net.neoEmilding.sshxcute SSH Java API库连接到sftp服务器并执行该服务器上的shell脚本 我的Shell脚本完成了一项简单的工作,将文件从SFTP位置移动到其他机器上的HDFS位置 目前,无法报告任何文件是否由于连接失败、文件名非法、文件为空等原因而未移动 我想知道,如何显示每个失败文件的信息集从shell命令移回Java代码 这是我的示例代码: // e.g sftpScriptPath => /abc/xyz // sftpScript

我正在使用net.neoEmilding.sshxcute SSH 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);
}
exec
方法调用返回的对象包括:

  • 退出状态或返回代码(
    Result.rc
  • 标准输出(标准输出)(
    Result.sysout
  • 标准错误(stderr)(
    Result.error\u msg
    ),以及
  • 成功的指示,(
    Result.issucess

因此,如果您致力于使用框架执行shell脚本的当前方法,那么最简单的方法就是让
move.sh
脚本在移动文件时提供有关任何失败的信息。这可以通过组合返回代码和标准输出(stdout)和/或标准错误(stderr)消息来实现。然后,Java代码将从返回的对象中获取此信息。

从shell脚本中,您只能获得指示成功或失败的返回值,但您可以安排脚本将每次失败的原因写入日志文件,当脚本报告失败时,Java代码可以从该日志文件中了解这些原因。