[BASH/CRON] Différences: droits des fichiers

fabriceOb Messages postés 23 Statut Membre -  
fabriceOb Messages postés 23 Statut Membre -
Bonjour

J'ai un script plutot long pour faire des tests.
Déroulement du script:

1- Initialisations diverses ($fold: dossier de travail depuis le home: /home/fabrice/test )

2- Création de $menu (fichier html)

3- lancement de selenium par la ligne:
/usr/bin/java -jar "$fold/selenium-server.jar" -htmlSuite "*firefox" $2 "$menu" "$file"

4- Traitement de $file (qui est le fichier résultat de selenium)



Quand je lance le script à la main, ca fonctionne.

Quand je le lance via mon crontab -e:
00 * * * * /home/fabrice/test/./unix params3
Ca ne marche pas.

Le souci se situer à la fin de l'étape 3: le fichier $file est bien crée, mais pèse 0 Ko. Comme s'il était protégé en écriture.
(ce que je teste à l'étape 4...)

Comment un script peut-il crée un fichier sans avoir les droits pour y écrire ?

quelqu'un a des idées ?

Merci !
A voir également:

10 réponses

Jean-François Pillou Messages postés 19541 Statut Webmaster 63 278
 
Je pense qu'il a les droits pour écrire le fichier (puisque le fichier existe) mais il n'a peut être pas les droits pour exécuter l'application Java...

Peut être qu'avec un sudo/su ...
0
fabriceOb Messages postés 23 Statut Membre 3
 
Il exécute pourtant bien la ligne java (vu que le fichier est crée...)

Comment on peut faire un sudo dans un script sans qu'il demande le mot de passe ?

[edit] En meme temps, quand je tape le mot de passe, ca ne marche pas.. je pense que ca vient donc de là: le su n'a pas les droits sur l'éxécution... (a priori, il lui manque quelque chose pour firefox bin.... (je hais ubuntu 64..))
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
0
asevere Messages postés 13521 Statut Webmaster 426
 
Bonjour,

Essaye de rediriger stdout et stderr de ton script cron vers un fichier de logs pour analyse:
00 * * * * /home/fabrice/test/./unix params3 
devient
00 * * * * /home/fabrice/test/./unix params3 >/home/fabrice/test/unix.out 2>&1
Aprés exécution regarde si tu n'as pas des erreurs dans /home/fabrice/test/unix.out
En cron, l'environnement de ton utilisateur n'est pas le même que quand tu es logué, certaines variables peuvent être manquantes, $JAVA_HOME, $CLASSPATH, et tout le reste. c'est peut-être ce qui te pose problème.

Dans ce cas, les solutions sont multiples:
définir des variable pour l'environnement cron (en tête de crontab voir le man)
définir tout ce qu'il faut dans le script lancé (pas maintenable si a terme tu as beaucoup de scripts lancé de cette manière)
faire dans le script ce qui est fait quand tu te logues (source des fichier .bash* /etc/profile.d/* etc.)

@+
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut Adrien,

Content de te revoir trainer dans le coin ;-))

faire dans le script ce qui est fait quand tu te logues (source des fichier .bash* /etc/profile.d/* etc.)
Y'en a qui écoute et d'autres pas ;-((
post #2
post #4

;-))
0
asevere Messages postés 13521 Statut Webmaster 426 > jipicy Messages postés 41342 Statut Modérateur
 
(-:

> faire dans le script ce qui est fait quand tu te logues (source des fichier .bash* /etc/profile.d/* etc.)
Y'en a qui écoute et d'autres pas ;-((


Bah je pense pas que sudo/su soit nécéssaire pour lancer Sélénium, je me base sur l'hypothèse qu'il n'a pas modifier sont script ainsi :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabriceOb Messages postés 23 Statut Membre 3
 
jipicy> pendant une seconde, j'ai cru que tu te moquais de moi, mais finalement, j'ai appris des trucs sur cette page.

finalement, le cron ouvre des sessions pour moi, et ca ne lui suffit pas.

Exemple dans le log:
Aug 20 11:22:01 fabrice-desktop CRON[9328]: (pam_unix) session opened for user fabrice by (uid=0)
Aug 20 11:22:01 fabrice-desktop CRON[9328]: (pam_unix) session closed for user fabrice


Donc, j'ai bien "géré" et c'est bien mon cron qui lance mon fichier... Pourquoi n'a t-il pas les droits ? Mystère.

(Quoique je doive explorer la piste du firefox/bin (qui n'existe pas sur ma version 64...). Quelqu'un m'avait bidouillé une solution, mais ca peut venir de là vu les messages d'erreurs en rajoutant le sudo...)
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
mais finalement, j'ai appris des trucs sur cette page.
Ben comme c'était toi l'initiateur de cette page, y'a un moment que t'aurais dû le voir, non ?

;-))
0
fabriceOb Messages postés 23 Statut Membre 3
 
jipicy > ca m'apprendra à taper plus vite: je te parlais de la page sur le sudo ^^

Pour les conseils donnés dans l'autre fil: j'ai effectivement cru que ca marchait, mais finalement, non. Mon test a tourné "à vide" pendant 2 semaines (alors que j'étais persuadé qu'il marchait...)
[et vu que je l'avais mis résolu, je me voyais mal le réouvrir]

Pour le out, voilà le résultat:
java.lang.RuntimeException: Firefox couldn't be found in the path!
Please add the directory containing 'firefox-bin' to your PATH environment
variable, or explicitly specify a path to Firefox like this:
*firefox /blah/blah/firefox-bin

=> donc, c'est bien firefox/bin qui me fait encore suer.
Faut juste que je trouve comment avoir un firefox/bin qui fonctionne pour mon cron alors que firefox/bin sur Ubuntu64, c'est pas génial.

J'avance, meme si c'est pas dans le sens que je croyais...
0
asevere Messages postés 13521 Statut Webmaster 426
 
Pour le out, voilà le résultat:
java.lang.RuntimeException: Firefox couldn't be found in the path!
Please add the directory containing 'firefox-bin' to your PATH environment
variable, or explicitly specify a path to Firefox like this:
*firefox /blah/blah/firefox-bin


Voualà ce que je voulais dire plus haut :)

La variable PATH n'existe pas via cron, il faut donner le chemin complet vers firefox dans ton script, et ça devrait fonctionner :)

@+
0
fabriceOb Messages postés 23 Statut Membre 3
 
Seulement, quand je note:
/usr/bin/java -jar "$fold/selenium-server.jar" -htmlSuite "*custom /usr/bin/firefox" $2 "$menu" "$file

=> selenium lance bien firefox (hourra)
=> il n'ouvre pas une nouvelle session de FF (contrairement à d'habitude)
=> il ne lance pas les tests.

bon, ca vient donc de la facon de lancer firefox par selenium, faut que je regarde ca ;)


Merci à vous.
0
asevere Messages postés 13521 Statut Webmaster 426
 
Essaye avec /usr/lib/firefox-<version>/firefox-bin

Ou quelque chose du genre, le chemin exacte chez toi tu pourra le trouver avec la commande suivante:
find /usr -name firefox-bin
--
Une belette, un lapin !?
C'est pas normal!
0
fabriceOb Messages postés 23 Statut Membre 3 > asevere Messages postés 13521 Statut Webmaster
 
$ /usr/lib/firefox/firefox-bin
/usr/lib/firefox/firefox-bin: error while loading shared libraries: libmozjs.so: cannot open shared object file: No such file or directory


dommage.
il me reste je pense 3 solutions:
-> ne pas utiliser firefox (vu que firefox-bin n'existe pas en 64 sous Ubuntu).
-> contourner le probleme pour avoir un firefox-bin compatible
-> changer d'OS.
0
asevere Messages postés 13521 Statut Webmaster 426 > asevere Messages postés 13521 Statut Webmaster
 
En fait, le firefox-bin c'était une idée comme ça, mais effectivement, ça ne fonctionnera pas.

Autre chose,

Quand tu lance le script à la main, j'imagine que c'est à partir d'une console ouverte dans une interface graphique (gnome/kde), de mémoire, pour sélénium, comme il utilise Firefox, il est nécéssaire d'avoir une interface graphique lancée et accessible, ce que n'a pas cron.

Le plus simple pour tester:
sur la machine, lancer l'interface graphique, ouvrir une console dans cette interface et taper la commande suiavnte:
xhost +
Ensuite, dans ton script, il faudrait commencer par exporter la variable DISPLAY:
export DISPLAY=:0
Et attendre que le cron se déclanche, voir si ça fonctionne.

Cordialement

0
fabriceOb Messages postés 23 Statut Membre 3
 
$ xhost +
access control disabled, clients can connect from any host

le cron se lance : arf.. dommage ;)
mais meme si le cron bloque toujours... mais je suis presque sur que c'est firefox-bin qui bloque.... je chercherais demain.
0
asevere Messages postés 13521 Statut Webmaster 426
 
Arf :(

Même avec le export ? :-/

Etrange, et dans le .out, tu n'as pas plus d'info qu'avant en donnant le path complet vers Firefox ?

Bonne soirée
0
fabriceOb Messages postés 23 Statut Membre 3
 
asevere > si si, le message que j'ai donné est un extrait. Mais suffisant pour voir qu'il me manque firefox-bin... (plus le temps passe, moins j'aime le AMD-64..
0