2011-12-21 44 views
0

rootとして実行されるシェル・スクリプトがあります。スクリプトをoracleユーザーに切り替え、sqlplusを実行して.sqlファイルを実行します。 私はfollowungしようとしています:rootとして実行されるシェル・スクリプトからoracleユーザーとしてoracleスクリプトを実行します。

su - oracle << -EOF1 2>&1 
     sqlplus $user/$password << -EOF2 
       @oracle.sql; 
       @quartz.sql; 
     EOF2 
EOF1 

私はstty: standard input: Inappropriate ioctl for deviceそれがどういう意味を取得し、すべての最初の?

第二に、誰かがこのケースでどのようにリダイレクトする必要があるのですか?

おかげ

答えて

2

用途:

if [ "$(id -un)" -eq "root" ]; then 
    exec su - oracle -c $0 
fi 

sqlplus <<EOF 
blablabla 
EOF 

スクリプトが潜在的に引数を取る場合、解決策は異なります。

実行しているユーザーが現在rootかどうかを確認します。その場合は、代わりにユーザoracleとしてスクリプト($0)を実行します。

しかし、なぜ、スクリプトは最初にrootとして実行されますか?

+0

私は、スクリプトをrootとして実行することは非常に悪いことですが、スクリプトを実行するインフラストラクチャがrootとして実行されているので選択できません。それを変更することは私の電話ではありません – Michael

+0

あなたのソリューションは何を正確にしていますか? – Michael

+0

投稿の編集を参照してください。あなたのスクリプトに引数がありますか? – fge

0

SU - -cオラクル "エコー 'デュアルから1を選択します。 は、デュアルから2を選択します。' | SYSDBAとしてsqlpus /"

'は次の使用が含まれている場合 SU - オラクル、 "エコー\" -cを選択デュアルから1。 select 2 from dual; \ "| sqlpus/as sysdba"

関連する問題