Lancer shell tomcat dans shell oracle
Fermé
Bonjour,
Je dois lancer à partir d'un shell oracle, un shell sous le compte tomcat.
Ce que j'ai essayé de faire :
- j'ai mis le user oracle dans le group de tomcat, j'arrive à lancer le tomcat sous le compte oracle mais le résultat dans l'appliaction n'est pas correcte (erreurs), il faut absolument de le tomcat soit lancé sous le compte tomcat.
Existe-il une possibilité de faire un su - tomcat dans le shell oracle ? Mais comment passer le mot de passe tomcat ?
Merci à celui qui déjà rencontré ce problème ... et qui a une solution (rien trouvert sur le net)
Pierre
Je dois lancer à partir d'un shell oracle, un shell sous le compte tomcat.
Ce que j'ai essayé de faire :
- j'ai mis le user oracle dans le group de tomcat, j'arrive à lancer le tomcat sous le compte oracle mais le résultat dans l'appliaction n'est pas correcte (erreurs), il faut absolument de le tomcat soit lancé sous le compte tomcat.
Existe-il une possibilité de faire un su - tomcat dans le shell oracle ? Mais comment passer le mot de passe tomcat ?
Merci à celui qui déjà rencontré ce problème ... et qui a une solution (rien trouvert sur le net)
Pierre
A voir également:
- Lancer shell tomcat dans shell oracle
- Classic shell windows 11 - Télécharger - Personnalisation
- Shell startup windows 10 - Guide
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell infrastructure host c'est quoi - Guide
- Problème avec shell infrastructure host ✓ - Forum Windows 10
10 réponses
macartur95
Messages postés
165
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
4 mai 2009
23
29 mars 2009 à 18:04
29 mars 2009 à 18:04
Hi,
Seul le compte root peut lancer des commandes d'un autre utilisateur .
Il y a 2 façons de faire :
vous lançez en tant que root
su - tomcat -c votre commande
ou vous passez par sudo qui donne des droits root limités à la seule commande .Il faut demander aux admins root
de mettre le script dans sudoers
Seul le compte root peut lancer des commandes d'un autre utilisateur .
Il y a 2 façons de faire :
vous lançez en tant que root
su - tomcat -c votre commande
ou vous passez par sudo qui donne des droits root limités à la seule commande .Il faut demander aux admins root
de mettre le script dans sudoers
Merci pour d'une réponse si rapide.
J'ai bien compris ce que tu me dis et je vais regarder sudo.
En attendant, voilà ce que je voudrais faire pour contourner le problème.
Ecrire un shell tomcat_oracle.sh sous root avec :
su - tomcat -c script_arret_tomcat.sh (arret tomcat)
su - oracle -c mon_script_bkp_offline.sh (backup offline base oracle)
su - tomcat -c script_demarrage_tomcat.sh (demarrage tomcat)
et en crontab :
00 03 * * * * /quelque_part/tomcat_oracle.sh
Est-ce que tu penses que c'est jouable ?
Merci d'avance.
PICO
J'ai bien compris ce que tu me dis et je vais regarder sudo.
En attendant, voilà ce que je voudrais faire pour contourner le problème.
Ecrire un shell tomcat_oracle.sh sous root avec :
su - tomcat -c script_arret_tomcat.sh (arret tomcat)
su - oracle -c mon_script_bkp_offline.sh (backup offline base oracle)
su - tomcat -c script_demarrage_tomcat.sh (demarrage tomcat)
et en crontab :
00 03 * * * * /quelque_part/tomcat_oracle.sh
Est-ce que tu penses que c'est jouable ?
Merci d'avance.
PICO
macartur95
Messages postés
165
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
4 mai 2009
23
29 mars 2009 à 18:37
29 mars 2009 à 18:37
Hi,
cela marchera mieux comme ça dans la crontab
00 03 * * * * su - tomcat -c "script_arret_tomcat.sh"
et dans la crontab de l'user tomcat
00 03 * * * * sudo /....../script_arret_tomcat.sh
mais il faut mettre en place sudo et c'est ce qui est très utilisé/obligatoire dans le milieu pro simplement pour limité les accès au compte root car on est root on ne donne pas n'importe droits aux utilisateurs sinon clash et problème de sécurité.....l'erreur est humaine mais on en bave pour remettre un système Linux/Unix en état de re marche.
cela marchera mieux comme ça dans la crontab
00 03 * * * * su - tomcat -c "script_arret_tomcat.sh"
et dans la crontab de l'user tomcat
00 03 * * * * sudo /....../script_arret_tomcat.sh
mais il faut mettre en place sudo et c'est ce qui est très utilisé/obligatoire dans le milieu pro simplement pour limité les accès au compte root car on est root on ne donne pas n'importe droits aux utilisateurs sinon clash et problème de sécurité.....l'erreur est humaine mais on en bave pour remettre un système Linux/Unix en état de re marche.
Tu as raison malheureusement j'ai déjà mis un certain nombre de scripts en production sans sudo.
Je vais voir avec le RSSI.
A part ça, je n'arrive pas à comprendre pourquoi pendant l'exécution de BackupOffline_Db.sh
dans la crontab ou à la ligne de commande BackupOffline_Db.sh :
00 03 * * * su - oracle -c "/xxx/BackupOffline_Db.sh BASE"
le script reste avec l'environnement de root. Comme il est impossible de se connecter à la base avec un autre compte que celui d'oracle la sauvegarde n'est pas effectuée.
J'ai tracé l'exécution de BackupOffline_Db.sh avec set -x et "id" = root.
-----------------------------------------------------------------
BackupOffline_Db: Debut backup base TEST le 29/03/09 a: 19:08:12
-----------------------------------------------------------------
ID.....
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
La base TEST est actuellement DEMARREE,
la sauvegarde peut commencer ...
ERROR:
ORA-01031: insufficient privileges
SP2-0640: Not connected
SP2-0640: Not connected
La connexion a la base n'est pas possible (Pb serveur Oracle, listener ou reseau),
=> la sauvegarde est interrompue (sortie par exit.)
Peut-être as-tu une nouvelle solution pour ce problème ?
Merci d'avance.
PICO
Je vais voir avec le RSSI.
A part ça, je n'arrive pas à comprendre pourquoi pendant l'exécution de BackupOffline_Db.sh
dans la crontab ou à la ligne de commande BackupOffline_Db.sh :
00 03 * * * su - oracle -c "/xxx/BackupOffline_Db.sh BASE"
le script reste avec l'environnement de root. Comme il est impossible de se connecter à la base avec un autre compte que celui d'oracle la sauvegarde n'est pas effectuée.
J'ai tracé l'exécution de BackupOffline_Db.sh avec set -x et "id" = root.
-----------------------------------------------------------------
BackupOffline_Db: Debut backup base TEST le 29/03/09 a: 19:08:12
-----------------------------------------------------------------
ID.....
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
La base TEST est actuellement DEMARREE,
la sauvegarde peut commencer ...
ERROR:
ORA-01031: insufficient privileges
SP2-0640: Not connected
SP2-0640: Not connected
La connexion a la base n'est pas possible (Pb serveur Oracle, listener ou reseau),
=> la sauvegarde est interrompue (sortie par exit.)
Peut-être as-tu une nouvelle solution pour ce problème ?
Merci d'avance.
PICO
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
macartur95
Messages postés
165
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
4 mai 2009
23
29 mars 2009 à 19:50
29 mars 2009 à 19:50
Hi,
Dans le script BackupOffline_Db.sh il faut charger au début dans le script , l'environnement de l'user Oracle du style
. /home/oracle/oracle.env en génèral et entre le . et le / il y a 2 espaces pour dire que l'on charge l'environnement d'un utilisateur
Dans le script BackupOffline_Db.sh il faut charger au début dans le script , l'environnement de l'user Oracle du style
. /home/oracle/oracle.env en génèral et entre le . et le / il y a 2 espaces pour dire que l'on charge l'environnement d'un utilisateur
Voilà ce qu'il y a au début du script : (ce script fonctionne très bien sous le compte oracle)
#set -x
. $HOME/EnvExploitOracle.sh
BASE=$1
if [ $# != 1 ]
then
printf "\nusage: BackupOffline_Db <BASE> \n\n"
exit
fi
EnvExploitOracle.sh :
echo $HOME
/home/oracle
#!/bin/ksh
SHELL=/bin/ksh
export SHELL
umask 022
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15; export NLS_LANG
#ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/SAN/oracle; export ORACLE_BASE
ORACLE_HOME=/opt/oracle/product/10.2.0/db_1; export ORACLE_HOME
#ORACLE_SID=TSH1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL
#ulimit -p 16384 ulimit -n 65536
umask 022
... + les variables d'environnement :
# -------- Paths Exploit/TEST database ------------
PATH_TXT_TEST=/SAN/oradata/Exploit/TEST/txt
PATH_CTL_TEST=/SAN/oradata/Exploit/TEST/ctl
PATH_DATA_TEST=/SAN/oradata/Exploit/TEST/data
#set -x
. $HOME/EnvExploitOracle.sh
BASE=$1
if [ $# != 1 ]
then
printf "\nusage: BackupOffline_Db <BASE> \n\n"
exit
fi
EnvExploitOracle.sh :
echo $HOME
/home/oracle
#!/bin/ksh
SHELL=/bin/ksh
export SHELL
umask 022
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15; export NLS_LANG
#ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/SAN/oracle; export ORACLE_BASE
ORACLE_HOME=/opt/oracle/product/10.2.0/db_1; export ORACLE_HOME
#ORACLE_SID=TSH1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL
#ulimit -p 16384 ulimit -n 65536
umask 022
... + les variables d'environnement :
# -------- Paths Exploit/TEST database ------------
PATH_TXT_TEST=/SAN/oradata/Exploit/TEST/txt
PATH_CTL_TEST=/SAN/oradata/Exploit/TEST/ctl
PATH_DATA_TEST=/SAN/oradata/Exploit/TEST/data
macartur95
Messages postés
165
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
4 mai 2009
23
29 mars 2009 à 20:05
29 mars 2009 à 20:05
Hi,
il faut lancer le script sous le user oracle pour la sauvegarde Oracle car c'est lui le propriétaire de la base,les autres comptes peuvent seulement lire/ecrire lancer des requetes sql mais le compte dba c'est oracle et personne d'autre,c'est comme ca chez nous
il faut lancer le script sous le user oracle pour la sauvegarde Oracle car c'est lui le propriétaire de la base,les autres comptes peuvent seulement lire/ecrire lancer des requetes sql mais le compte dba c'est oracle et personne d'autre,c'est comme ca chez nous
Merci pour ta réponse. Bien reçu c'est oracle qui arrête ses bases.
C'est tellement vrai que maintenant quand je me connecte à la base j'ai ce message d'erreur :
# export ORACLE_SID=TEST
# sqlplus /nolog
SQL> connect /as sysdba
ERROR:
ORA-01031: insufficient privileges
Sur le net j'ai trouvé:
- ORACLE_SID doit différent de DBNAME (c'est le cas)
- qu'il fallait refaire le fichire orapwTEST de mot de passe (je n'en ai pas défini sur la base TEST).
Si je peux encore abuser, as-tu une idée sur ce problème.
Merci encore.
PICO
C'est tellement vrai que maintenant quand je me connecte à la base j'ai ce message d'erreur :
# export ORACLE_SID=TEST
# sqlplus /nolog
SQL> connect /as sysdba
ERROR:
ORA-01031: insufficient privileges
Sur le net j'ai trouvé:
- ORACLE_SID doit différent de DBNAME (c'est le cas)
- qu'il fallait refaire le fichire orapwTEST de mot de passe (je n'en ai pas défini sur la base TEST).
Si je peux encore abuser, as-tu une idée sur ce problème.
Merci encore.
PICO
macartur95
Messages postés
165
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
4 mai 2009
23
29 mars 2009 à 20:48
29 mars 2009 à 20:48
Hi,
Je ne suis pas dba malgré que j'ai suivi les cours dba1/2 pour piger comment fonctionne Oracle , je suis admin unix/linux ; mais d'après le message c'est pas le user sysdba qui est le propriétaire de la base (créateur de la base) ,il a pas assez de droit.
Si le ton problème perdure je peux demander demain à mes collègues dba, chacun son métier sinon je serais dba
oracle ou sapeur mais je préfère le système.
Je ne suis pas dba malgré que j'ai suivi les cours dba1/2 pour piger comment fonctionne Oracle , je suis admin unix/linux ; mais d'après le message c'est pas le user sysdba qui est le propriétaire de la base (créateur de la base) ,il a pas assez de droit.
Si le ton problème perdure je peux demander demain à mes collègues dba, chacun son métier sinon je serais dba
oracle ou sapeur mais je préfère le système.
Le problème était lié au fait que j'avais mis le user oracle dans le group tomcat en espérant que oracle pourrait arrêter le tomcat, erreur.
J'ai rétabli la situation et les connexions aux base Oracle sont OK maintenant.
Donc le problème est soldé.
Un grand merci pour ton aide et ta persévérance à m'avoir aidé dans ces problèmes.
Bonne fin de dimanche et très bonne semaine.
PICO
J'ai rétabli la situation et les connexions aux base Oracle sont OK maintenant.
Donc le problème est soldé.
Un grand merci pour ton aide et ta persévérance à m'avoir aidé dans ces problèmes.
Bonne fin de dimanche et très bonne semaine.
PICO