В нашем приложении есть несколько сценариев оболочки, которые вызываются из веб-формы Oracle Forms 10g и работают на нескольких серверах Solaris 10. Недавно мы обнаружили, что сценарии оболочки не работают с полными разрешениями учетной записи пользователя OAS, которая запускает формы. Я добавил команду echo User is $USER
к одному сценарию, чтобы отобразить имя пользователя Solaris, и оно показало только User is
. Когда я вместо этого использовал команду id
, она показала, что работает как правильный пользователь.
Итак, есть мысли о том, как заставить скрипт оболочки узнать, кто он такой, чтобы он мог читать файлы?
Вышеупомянутые администраторы дважды проверили все, о чем они могут думать, и поклялись, что все установлено точно так же, как и на всех других серверах. Сценарий оболочки вызывается с помощью команды HOST
из форм.
Мы находимся в формах 10g, Solaris 10, Oracle 10.1.0.4.2, а в учетной записи Solaris запущена оболочка ksh.
Спасибо,
Dan
Редактировать: все материалы об отчетах удалены, поскольку эта проблема была решена, но мне все еще интересно, если кто-нибудь знает, почему сценарии оболочки, вызываемые из форм с помощью команды HOST
, не получают полный вход.
Обновление: вот аргумент, переданный команде HOST
(да, аргумент - 3 строки с переводами строки):
exec > /u01/app/swms/forms/edoc_stage/Z05273_tibco_edoc.log
exec 2>&1
/u01/app/swms/forms/edoc_stage/tibco_edoc.sh DMSPV01\^NTSTE101 SWMSeDocTIBCO-d1 XXXXXX 082200413
Первоначально я пытался просто вызвать скрипт, как в последней строке аргумента, но ничего не получил, поэтому я скопировал то, что делал другой вызов скрипта, и изменил его. Вот откуда появились две первые строки.
А вот и сам сценарий. Мне пришлось добавить 3 строки, начинающиеся с PATH=/usr/bin
, чтобы заставить .profile
выполнить. Я хочу знать, почему это было необходимо: почему оболочка не делает это автоматически?
#!/bin/ksh
PATH=/usr/bin
USERNAME=`id | cut -d'(' -f2 | cut -d')' -f1`
. ~$USERNAME/.profile
TIBCO_HOME=${ORACLE_HOME}/forms/java
JAVA_HOME=/usr/java
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/PVIntegration.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/wsdl4j-1.5.1.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/saaj.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/log4j-1.2.8.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/jaxrpc.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/commons-logging-1.0.4.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/commons-discovery-0.2.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/axis.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/activation.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/mailapi.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/WSProxy.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/xmlsec-1.4.2.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/wss4j-1.5.5.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/Config.properties
export CLASSPATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${TIBCO_HOME}
export LD_LIBRARY_PATH
${JAVA_HOME}/bin/java -Xms128m -Xmx256m com.aps.ecm.clients.ECMClient $1 $2 $3 $4