Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
2763 connectés 

  FORUM HardWare.fr
  OS Alternatifs
  Codes et scripts

  [résolu] Shell script : fail depuis le crontab, ok en manuel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Shell script : fail depuis le crontab, ok en manuel

n°1152081
La Fugue
It's Time to Bite !
Posté le 31-07-2009 à 13:44:35  profilanswer
 

Bonjour,
 
J'ai un shell script qui exécute un script php qui se connecte à une base oracle (pour un select).
Quand je le lance à la main (./mon_script.sh), ça marche.
Quand il est éxécuté en auto via le crontab, j'ai une erreur en me connectant à la DB Oracle (oci error, etc).
C'est le même user qui le lance, le ORACLE_HOME est bien dans le profil, la DB est bien sélectionnée, tout pareil : sauf le mode d'éxécution.
J'ai même fait un export du ORACLE_HOME dans le script même, pareil :/
 
edit : c'est la seule erreur qui me fait tiquer :
 
Warning: ocilogon(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME is set and points to the right directory in /XXX/XXX/INC/ora_conn.php on line 2

 
Mais tout est correct pourtant. D'où l'idée que ça vient d'une astuce liée au crontab.
 
Quelqu'un a une idée  :??:
 
(sur Debian)

Message cité 1 fois
Message édité par La Fugue le 31-07-2009 à 15:14:41
mood
Publicité
Posté le 31-07-2009 à 13:44:35  profilanswer
 

n°1152092
Le_Tolier
Hello IT ?
Posté le 31-07-2009 à 14:35:38  profilanswer
 

Pourrais tu nous montrer ton script ?


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°1152097
o'gure
Modérateur
Posté le 31-07-2009 à 14:45:18  profilanswer
 

La Fugue a écrit :

edit : c'est la seule erreur qui me fait tiquer :
 
Warning: ocilogon(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME is set and points to the right directory in /XXX/XXX/INC/ora_conn.php on line 2

 
Mais tout est correct pourtant. D'où l'idée que ça vient d'une astuce liée au crontab.
 
Quelqu'un a une idée  :??:


Quand tu exécutes un script via contrab tu travailles dans un environnement restreint. Principalement, tu n'as toutes tes variables d'environnement habituelles de définies.
 
En l'occurence, vu ton message, je pense que ORACLE_HOME n'est pas correctement définie.
 
Tu as deux solutions, soit tu la rajoutes dans ton script, soit tu la rajoutes dans ton crontab.

Message cité 1 fois
Message édité par o'gure le 31-07-2009 à 14:45:39
n°1152102
La Fugue
It's Time to Bite !
Posté le 31-07-2009 à 14:55:40  profilanswer
 

Le_Tolier a écrit :

Pourrais tu nous montrer ton script ?


 
Pourquoi je m'attendais à cette question ? :D
 
Voilà le .sh
 

Code :
  1. #!/bin/sh
  2. MAIL_DEST="toto@toto.com"
  3. /usr/local/bin/php /XXX/scripts/report.php
  4. /usr/bin/mpack -s "BLA BLA : `date +"%d%b%Y"`" /XXX/XXX/REPORT.xls $MAIL_DEST



Message édité par La Fugue le 31-07-2009 à 14:56:08
n°1152105
La Fugue
It's Time to Bite !
Posté le 31-07-2009 à 14:58:32  profilanswer
 

o'gure a écrit :


Quand tu exécutes un script via contrab tu travailles dans un environnement restreint. Principalement, tu n'as toutes tes variables d'environnement habituelles de définies.

 

En l'occurence, vu ton message, je pense que ORACLE_HOME n'est pas correctement définie.

 

Tu as deux solutions, soit tu la rajoutes dans ton script, soit tu la rajoutes dans ton crontab.

 

Merci.

 

J'avais fait un "EXPORT ORACLE_HOME = ..." dans le script .sh lui-même mais c'était pareil.
Quant à le rajouter dans le crontab, j'avoue que je ne connais pas la manière de le faire.

Message cité 3 fois
Message édité par La Fugue le 31-07-2009 à 14:59:06
n°1152109
WedgeAnt
Da penguin inside
Posté le 31-07-2009 à 15:01:20  profilanswer
 

La Fugue a écrit :


 
Merci.
 
J'avais fait un "EXPORT ORACLE_HOME = ..." dans le script .sh lui-même mais c'était pareil.
Quant à le rajouter dans le crontab, j'avoue que je ne connais pas la manière de le faire.


l'export ne suffit pas, il faut définir ta variable dans le script :o


---------------
Da penguin manchot inside à l'interieur :o -#- RypDVD -#- Slackware-fr -#- PW: +∞
n°1152116
Le_Tolier
Hello IT ?
Posté le 31-07-2009 à 15:10:36  profilanswer
 

La Fugue a écrit :


 
Merci.
 
J'avais fait un "EXPORT ORACLE_HOME = ..." dans le script .sh lui-même mais c'était pareil.
Quant à le rajouter dans le crontab, j'avoue que je ne connais pas la manière de le faire.


 
Pour moi si tu fais : export ORACLE_HOME=/product/oracle/
 
ca devrait le faire.
 
Pour tester tu peux faire un dump dans un fichier de la commande env pendant l execution dans le cron.


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°1152119
o'gure
Modérateur
Posté le 31-07-2009 à 15:11:19  profilanswer
 

La Fugue a écrit :

J'avais fait un "EXPORT ORACLE_HOME = ..." dans le script .sh lui-même mais c'était pareil.
Quant à le rajouter dans le crontab, j'avoue que je ne connais pas la manière de le faire.

export en minuscule

n°1152121
La Fugue
It's Time to Bite !
Posté le 31-07-2009 à 15:13:08  profilanswer
 

En fait il me manquait un bout dans ma variable, elle était effectivement mal définie :/
J'ai un ORACLE_BASE = /path
Et un ORACLE_HOME = $ORACLE_BASE/path
J'avais oublié de spécifier le ORACLE_BASE avant ...

 

Désolé pour le dérangement ...

 

Cela dit, si on peut définir des variables d'env dans le crontab, ça m'intéresse de savoir comment :)

 

(oui en minuscule, je sais pas pourquoi j'ai mis export en MAJ ici)

 

A+

Message cité 1 fois
Message édité par La Fugue le 31-07-2009 à 15:13:40
n°1152122
o'gure
Modérateur
Posté le 31-07-2009 à 15:13:11  profilanswer
 

WedgeAnt a écrit :


l'export ne suffit pas, il faut définir ta variable dans le script :o


As tu lu "dans le script .sh lui-même" comme moi ?
Sinon prends le morceau de doigt d'anapi et utilise le pour relire :o
 
ça suffit normalement. La variable est définie dans l'environnement d'exécution du script et les programmes lancés via ce script hériteront de l'environnnement.

Message cité 1 fois
Message édité par o'gure le 31-07-2009 à 15:14:48
n°1152123
WedgeAnt
Da penguin inside
Posté le 31-07-2009 à 15:14:08  profilanswer
 

o'gure a écrit :


As tu lu "dans le script .sh lui-même" comme moi ?
Sinon prends le morceau de doigt d'anapi et utilise le pour relire :o

 

ça suffit normalement. La variable est définie dans l'environnement d'exécution du script et les programmes lancés via ce script hériteront dans l'environnnement.


j'avais surtout pas vu le "= ..." après "export TRUC" [:tinostar]

 

edit: faut pas d'espace entre le nom de la variable, le = et le contenu:

export BLABLA=truc


Message édité par WedgeAnt le 31-07-2009 à 15:14:46

---------------
Da penguin manchot inside à l'interieur :o -#- RypDVD -#- Slackware-fr -#- PW: +∞
n°1152124
o'gure
Modérateur
Posté le 31-07-2009 à 15:14:13  profilanswer
 

La Fugue a écrit :

Cela dit, si on peut définir des variables d'env dans le crontab, ça m'intéresse de savoir comment :)


man crontab devrait te l'indiquer

n°1152125
La Fugue
It's Time to Bite !
Posté le 31-07-2009 à 15:16:06  profilanswer
 

o'gure a écrit :


man crontab devrait te l'indiquer


 
RTFM, ok :D
 
Merci, c'est en discutant qu'on tombe sur la bête connerie à laquelle on avait pas fait gaffe, et dieu sait si ça arrive  :sarcastic:  
 
 :hello:


Message édité par La Fugue le 31-07-2009 à 15:16:26
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  OS Alternatifs
  Codes et scripts

  [résolu] Shell script : fail depuis le crontab, ok en manuel

 

Sujets relatifs
[Résolu]proftpd non accessible de l exterieurProblème avec un raid 5 logiciel (mdadm) [résolu]
mises à jour ( résolu )[Son] Pas de son sous Mandriva 2009.1 [Résolu]
[Résolu - Ubuntu 9.04] Affichage plus court du promp terminal[résolu] wine + descent3 : pb accès vidéo
[Résolu] Virer Ubuntu[Résolu] Problème de logging depuis chrootage
[Résolu] Test chaine de caractères avec Shell : Help ! 
Plus de sujets relatifs à : [résolu] Shell script : fail depuis le crontab, ok en manuel


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware