gpt4 book ai didi

java - 无法从 Shell 包含 sshpass 的 Java 调用 shell 脚本

转载 作者:行者123 更新时间:2023-12-02 09:40:14 24 4
gpt4 key购买 nike

我们有一个用例,用于将 > 4GB 数据文件从 sftp 站点传输到服务器盒。我们决定创建一个 java 服务,它将调用一个 shell 脚本,让实习生进入 sftp 站点和路径并将文件传输到目标目的地。

我们编写了以下代码来从 Java 文件调用 shell 脚本。

Process proc = null;
String command = "/mnt/hmdata/loadTest.sh";
System.out.println("passing command::" + command);
try {
Runtime rt = Runtime.getRuntime();
proc = rt.exec(command.trim());
boolean status = proc.waitFor `enter code here` (45, TimeUnit.SECONDS);
LOGGER.log(Level.INFO, "Shell Called successfully");
if (status) {
msg = "Shell Called successfully";

} else {
msg = "Error while calling Shell";
}
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
proc.destroy();
}

shell脚本是这样的

sshpass -p '<password>' scp -r <userid>@<host>:/finint/inbound/financial/tenv/edw_osccl/* .

一旦我调用我的 java 服务,我们的服务就无法启动 shell。相反,相同的 shell 在服务器命令提示符下工作正常。我们正在 Unix 上运行我们的程序。

有人可以建议解决方案吗?

最佳答案

已解决。 Java 代码没有变化。

   Changed Shell Script as
echo "Hello" >> /mnt/hmdata/output.txt
chmod 777 /mnt/hmdata/output.txt
export PASSWD="password"

sshpass -f /mnt/hmdata/password scp -v -r <user><host>:<path>/<file>

关于java - 无法从 Shell 包含 sshpass 的 Java 调用 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57144127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com