【发布时间】:2014-03-04 06:15:31
【问题描述】:
我正在使用 net.neoremind.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);
}
【问题讨论】:
-
从shell脚本你只能得到一个表示成功或失败的返回值,但是你可以安排你的脚本将每次失败的原因写入日志文件,当脚本报告失败时,你的Java代码可以从该日志文件中了解这些原因。
标签: java api shell unix ubuntu