J’ai un script shell qui s’exécute en tant que root. Je souhaite que le script passe en mode utilisateur Oracle, exécute sqlplus et exécute des fichiers .sql
. J’essaie de suivre:
su - oracle <&1 sqlplus $user/$password << -EOF2 @oracle.sql; @quartz.sql; EOF2 EOF1
Tout d’abord je reçois stty: standard input: Inappropriate ioctl for device
que signifie-t-il?
Deuxièmement, quelqu’un peut-il m’expliquer comment la redirection (devrait) fonctionner dans ce cas?
Merci
Utilisation:
if [ "$(id -un)" -eq "root" ]; then exec su - oracle -c $0 fi sqlplus <
Si votre script prend potentiellement des arguments, la solution sera différente.
Qu'est-ce que cela fait vérifier si l'utilisateur en cours d'exécution est actuellement root. Si c'est le cas, il ré-exécute le script ( $0
) en tant qu'utilisateur oracle
place.
Mais BTW, pourquoi le script s'exécute-t-il en tant que root en premier lieu?
su – oracle -c “echo” sélectionnez 1 du double, sélectionnez 2 du double; ‘| sqlpus / comme sysdba ”
Si contient ‘en utilisant su – oracle – c “echo \”, sélectionnez 1 du double; sélectionnez 2 du double; \ “| sqlpus / comme sysdba”