我原来有个脚本是放在root下执行的,后面新建了个用户app,需要把脚本改成在这个新用户下执行,但是里面有调用oracle的存储过程,现在执行就报“standard in must be a tty”错误,大家帮忙看下如何解决,或者应该如何写才对,谢谢,脚本如下:
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=/oracle/app/product/10.2.0/db_1
export ORACLE_SID=ETL
export PATH=$ORACLE_HOME/bin:$PATH
##########################################
su - oracle -c "sqlplus etl/etl@ETL" << !
exec PROC_BACKUP_TEST;
exit
!
h4ckF1y 于 2011-12-06 22:20:34发表:
解决方法:python -c ‘import pty; pty.spawn(“/bin/sh”)’
得到shell就可以su进行交互了。
ljx198308 于 2011-03-25 14:55:30发表:
呵呵,问题已经搞定了,共享给大家一下,其实就是不用再去连oracle用户了,两个都属于同一组就可以直接执行了,所以改成如下就可以
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=/oracle/app/product/10.2.0/db_1
export ORACLE_SID=ETL
export PATH=$ORACLE_HOME/bin:$PATH
##########################################
sqlplus etl/etl@ETL << EOF
exec PROC_BACKUP_TEST;
exit
EOF
ljx198308 于 2011-03-25 13:47:04发表:
我已经把app这个用户和oracle放在同一个组了,可还是不行,麻烦再帮忙看下,谢谢
相思爱文 于 2011-03-25 12:48:30发表:
加入一个组,开放组权限