【发布时间】:2021-06-10 13:35:03
【问题描述】:
为了在调用 FTP 时调试可能的权限相关问题,通过从 oracle JAVA 过程调用 shell 脚本来测试它。 该脚本包含一些标准命令,如 whoami(找出会话用户)、ls、.. 当直接从服务器调用时,该脚本工作正常。 但是,当从 DB JAVA 过程调用时,它只识别“echo”命令。在这方面的任何想法都会有很大帮助。谢谢!
shell 脚本(FileTransfer.sh):
``#!/bin/ksh`
`echo "from double" >> /usr/users/ais/data/utl_data/Logs1.txt`
whoami >> /usr/users/ais/data/utl_data/Logs1.txt
ls >> /usr/users/ais/data/utl_data/Logs1.txt
echo "from double line 11" >> /usr/users/ais/data/utl_data/Logs1.txt
echo "from double line 13" >> /usr/users/ais/data/utl_data/Logs1.txt
JAVA程序
public class FTPTest{
public static int testSH () throws Exception {
String[] command = { "sh" "/usr/users/ais/data/utl_data/FileTransfer.sh"};
Process p = Runtime.getRuntime().exec(command);
try {
p.waitFor ();
}
catch (InterruptedException ie) {
;}
return p.exitValue ();
}
【问题讨论】:
-
确定通过 Java 代码执行脚本时的 PATH 设置将指向 whoami 和其他命令的位置?
-
在脚本中添加
echo $PATH... -
嗨,路径----/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin: /opt/puppetlabs/bin:/usr/users/oracle/.local/bin:/usr/users/oracle/bin 但这仅在从 shell 调用时再次出现。从 JAVA 完成后,我没有得到 $PATH 的任何输出..