Нет имени пользователя, когда Oracle Forms вызывает скрипт оболочки Solaris - PullRequest
1 голос
/ 15 января 2010

В нашем приложении есть несколько сценариев оболочки, которые вызываются из веб-формы 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

Ответы [ 2 ]

1 голос
/ 11 марта 2010

Оболочка может быть вызвана как «оболочка входа в систему» ​​или как «оболочка без входа в систему». Похоже на то, что оболочка, которую вызывает Oracle Forms, не является оболочкой входа в систему (вероятно, потому что оболочка не подключена к stdin в tty). Это также может быть сделано намеренно, чтобы явно предотвратить такие вещи, как .profile (или .cshrc или .bash_profile) от источника. Пользователи могут помещать всевозможные выходные данные в свои файлы .prfiles, что может привести к сбою при выполнении сценария.

0 голосов
/ 13 июля 2010

Я не уверен, как это поможет вам так поздно. Но когда у меня возникла эта проблема, я провел много исследований и, наконец, смог отследить эту проблему до версии rsh, которую Solaris вызывает по умолчанию; версия kerberos (/ usr / kerberos / bin / rsh). Затем я изменил его на / usr / bin / rsh, и это сработало!.

Привет

Arun

...