Запуск сценария оракула от имени пользователя-оракула из сценария оболочки, который запускается от имени пользователя root - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть сценарий оболочки, который запускается от имени пользователя root. Я хочу, чтобы скрипт переключился на пользователя oracle, запустил sqlplus и запустил некоторые .sql файлы. Я пытаюсь следовать:

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

в первую очередь я получаю stty: standard input: Inappropriate ioctl for device что это значит?

во-вторых, может кто-нибудь объяснить мне, как перенаправление (должно) работать в этом случае?

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Использование:

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

sqlplus <<EOF
blablabla
EOF

Если ваш сценарий потенциально принимает аргументы, решение будет другим.

Для чего он проверяет, является ли запущенный пользователь в данный момент пользователем root.Если это так, он повторно выполняет сценарий ($0) как пользователь oracle.

Но, кстати, почему сценарий запускается от имени root в первую очередь?

0 голосов
/ 28 февраля 2014

su - oracle -c "echo" выберите 1 из двойного; выберите 2 из двойного; '| sqlpus / as sysdba "

если содержит 'используя следующее su - oracle -c "echo \" выберите 1 из двойного; выберите 2 из двойного; \ "| sqlpus / as sysdba"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...