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代碼可以從該日誌文件中學習這些原因。 –