[résolu] Problème de script sh et cron

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

[résolu] Problème de script sh et cron

Messagepar hell-tys » 30 Mai 2006 11:53

Bonjour a tous,

Bon... ceci est un problème de débutant, j'avoue...

J'ai suivi les procédures de ce topic pour me faire un 'mysqldump' tous les jours...

alors j'ai fait un 'script.sh' executable
Code: Tout sélectionner
mysqldump mabase | gzip > /home/e-smith/savedb/mabase_backup_`date +%m_%d_%y`.gz


script qui fonctionne parfaitement..

puis je fait 'crontab -e' et j'y ajoute
Code: Tout sélectionner
20 11 * * * root /home/e-smith/savedb/./save.sh


là il me sort => 'crontab: installing new crontab'

puis 'crontab -l' => il est bien là...

puis je vérifie le log pour voir si il à bien fonctionné
Code: Tout sélectionner
May 30 11:20:02 nomserveur crond[30726]: (root) CMD (root /home/e-smith/savedb/./save.sh^M)


euh... erf d'où il sort ce '^M' à la fin.... et mon script qui marche manuellement ne se lance pas avec cron...
Quelqu'un peut-il me dire où j'ai foiré please ?
Merci :D
Dernière édition par hell-tys le 31 Mai 2006 15:46, édité 2 fois au total.
IpCop und e-Smith
hell-tys
Premier-Maître
Premier-Maître
 
Messages: 50
Inscrit le: 25 Avr 2006 14:07

Messagepar Muzo » 30 Mai 2006 13:20

Le ^M indique que tu as fais ton script sous windows.
Car windows et *nix n'ont pas les mêmes caractères d'échappements.
Si tu édites sont script .sh directement en console sur ta SME avec Vi, tu verras en bout de chaque ligne un ^M, il ne te reste plus qu'a les enlever sous vi, et à sauvegarder.
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar Grand-Pa » 30 Mai 2006 13:23

Plus rapide et pratique, la commande dos2unix. :wink:
Et hop, finis les galons !
Avatar de l’utilisateur
Grand-Pa
Vice-Amiral
Vice-Amiral
 
Messages: 728
Inscrit le: 08 Avr 2002 00:00
Localisation: Gap, France

Messagepar Muzo » 30 Mai 2006 13:24

Grand-Pa a écrit:Plus rapide et pratique, la commande dos2unix. :wink:


Chouette j'ai appris un truc ! Merci Grand-Pa :biz:
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar hell-tys » 30 Mai 2006 13:28

erf... oui..

j'ai capté avec vi le petit [dos] en bas
je n'ai pas fait attention à l'origine il vient bien windows...
je pensais qu'en remodifiant avec vi derrière c'était auto... enfin bref

dos2unix et ça roule pour ça.... cooool
maintenant, dans le log de cron il apparait bien sans le ^M... re-cooooool

mais... pas de résultats... euh... pas glop ça :shock:

well, courage, je cherche
Dernière édition par hell-tys le 30 Mai 2006 14:23, édité 2 fois au total.
IpCop und e-Smith
hell-tys
Premier-Maître
Premier-Maître
 
Messages: 50
Inscrit le: 25 Avr 2006 14:07

Messagepar hell-tys » 30 Mai 2006 15:53

dans divers site, on me dit de faire un fichier cron.deny contenant ALL
et un fichier cron.allow contenant le user autorisé
et celà dans le répertoire /etc/

je n'ai aucun de ces fichiers.... en ai-je besoin ?

et aussi, j'ai eu ça sur le mail de l'admin
Code: Tout sélectionner
From: root@*** (Cron Daemon)
To: root@***
Subject: Cron <root@***> root /home/e-smith/./save.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/bin/sh: root: command not found


gnark.. je nage... :lol:
IpCop und e-Smith
hell-tys
Premier-Maître
Premier-Maître
 
Messages: 50
Inscrit le: 25 Avr 2006 14:07

Messagepar Muzo » 30 Mai 2006 15:55

ton script doit commencer par :
Code: Tout sélectionner
#!/bin/sh


et non pas
/bin/sh


tu ferais mieux de nous afficher ton script, car c'est pas le cron qui des misères, mais ton script.
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar hell-tys » 30 Mai 2006 16:24

alors, résumons parceque j'ai pas mal bidouillé...

j'ai un script 'save.sh' exécutable qui fonctionne quand je le lance par 'save.sh'
vu que je l'ai mis dans /usr/bin/
Code: Tout sélectionner
mysqldump mabase | gzip > /home/e-smith/mabase_backup_`date +%y_%m_%d`.gz


celui là pas de souci.

ensuite, pour moi, c'est au niveau de cron que je dois me planter
quand je fais crontab -e, il faut bien que je mette
Code: Tout sélectionner
20 16 * * * root ./save.sh


et là c'est sensé marcher.. mais non ( c'est bon je reste zen 8) )

euh.... je n'ai mis /bin/sh dans aucun script... :oops:
c'est grave doc :?:
IpCop und e-Smith
hell-tys
Premier-Maître
Premier-Maître
 
Messages: 50
Inscrit le: 25 Avr 2006 14:07

Messagepar MasterSleepy » 30 Mai 2006 16:27

Salut,

[MODE PUB]
Tu n'essayerais pas avec sme-crontab_manager-1.2-1.noarch.rpm
[/MODE PUB]
:wink:

A+
"Microsoft fera quelque chose qui ne plantera jamais quand ils commenceront à fabriquer des clous "
http://www.vanhees.cc
Avatar de l’utilisateur
MasterSleepy
Amiral
Amiral
 
Messages: 2625
Inscrit le: 24 Juil 2002 00:00
Localisation: Belgique

Messagepar sibsib » 30 Mai 2006 21:28

Hello,

Problème super classique, celui là :

Dans un cron, il faut toujours mettre le nom complet des commandes, car le PATH de cron est très pauvre Et c'est très bien ainsi, çà évite qu'un petit malin mette une commande de même nom -mais de fonction différente ! - dans le chemin de cron qui tourne généralement sous root... Je pense que vous me suivez !

Donc, remplace :

Code: Tout sélectionner
mysqldump mabase | gzip > /home/e-smith/mabase_backup_`date +%y_%m_%d`.gz


par

Code: Tout sélectionner
/usr/bin/mysqldump mabase | /bin/gzip > /home/e-smith/mabase_backup_`/bin/date +%y_%m_%d`.gz


Cà devrait aller mieux.

Au fait : la commande qui convertit mysqldump en /usr/bin/mysqldump :

Code: Tout sélectionner
$ type mysqldump
mysqldump is /usr/bin/mysqldump


Pour les fichiers d'autorisations : pas utilisés sur SME (même 7), donc tu oublies.

A+,
Pascal
Sibsib, admin heureux d'un petit SME !!!
- SME 8.0 beta 6 dans une VM :-)
- ESXI 4.1 sur hardware noname
Ma petite page sur SME
Avatar de l’utilisateur
sibsib
Amiral
Amiral
 
Messages: 2368
Inscrit le: 11 Mai 2002 00:00
Localisation: France - région parisienne

Messagepar Gaston » 30 Mai 2006 23:38

Bonsoir,
tout à fait d'accord Sibsib, mais je pense que tu en as oublié un de PATH
hell-tys a écrit:ensuite, pour moi, c'est au niveau de cron que je dois me planter
quand je fais crontab -e, il faut bien que je mette
Code: Tout sélectionner
20 16 * * * root ./save.sh


Où est que tu crois que le système cherche ton script, Hell-tys ?

Moi je sait :lol: , dans le répertoire courant du cron à ce moment là :roll: laquelle valeur est
non définie (et certainement pas celle que tu crois).
Met un chemin absolu pour l'appel de ton script (en plus des recommandations de Sibsib) ça devrait
être le jour et la nuit

G
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar hell-tys » 31 Mai 2006 15:46

MasterSleepy a écrit:Salut,

[MODE PUB]
Tu n'essayerais pas avec sme-crontab_manager-1.2-1.noarch.rpm
[/MODE PUB]
:wink:

A+


:twisted: :D :D :D :D :D cooooool ça fonctionne !!!!!

Merci 1000 fois !!!!!
IpCop und e-Smith
hell-tys
Premier-Maître
Premier-Maître
 
Messages: 50
Inscrit le: 25 Avr 2006 14:07


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron