我有一个执行sqlplus命令的shell脚本(bash),当我从终端(或SSH客户端,如PuTTY或Xshell)运行它时,它可以完美地工作,这意味着我可以读取其输出。现在,我创建了一个Web界面,用户可以在其中启动该脚本,但是执行失败,因为似乎未执行相同的sqlplus。看一下我创建的以下简化示例:

测试 shell 脚本(test.sh):

echo 1
sqlplus -s SIEBEL/SIEBEL@SBLQA02 @select.sql
echo 2

select.sql:
select 'a' from dual;
exit;

在终端中生成的输出:
1

'
-
a

2

在网络客户端上生成的输出(到目前为止,我尝试将Ganymed SSH-2用于Java和sshj,产生相同的结果):
1
2

如您所见,只有简单的echo命令生成了输出。 sqlplus输出发生了什么?缺少任何东西吗?

在此先感谢您的帮助!

最佳答案

如果它对某人有所帮助:sqlplus不在SSH API在应用程序服务器中创建的 session 的路径中,则找不到sqlplus命令,并且显然没有生成标准输出。解决此问题可以在 shell 脚本中调用之前导出sqlplus路径来解决。

关于java - 使用Java SSH API时sqlplus缺少输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15363876/

10-13 08:58