0
我正在使用net.neoremind.sshxcute SSH Java API库连接到sftp服务器并执行该服务器上存在的shell脚本。从shell命令获得对Java代码的响应
我的外壳脚本做一个简单的工作,将文件从该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);
}
从shell脚本中只能得到表示成功或失败的返回值,但是您可以安排脚本将每次失败的原因写入日志文件,当脚本报告失败时,您的Java代码可以从该日志文件中学习这些原因。 –