Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/06/2009, à 14:24

Emmo30

[Résolu] lancer du bash avec crontab

Salut je voudrai lancer un script shell avec crontab mais le hic c'est que sa marche pas.

voici mon script:

#!/bin/bash
############# Initialisation des variables
boucle=start
i=0
############# Initialiser date du jour
datestamp=$(date +%s)
thisdate=$(date +%d/%m/%Y%l:%M)
############ Boucle
while [ $boucle = "start" ]; do

################ Creer le nom du fichier a telecharger
date=$(date -d "1970-01-01 CET + $datestamp seconds" "+%Y-%m-%d-%A").flv

################ Verification de l'existance du fichier dans le dossier source
if [ -e $date ]; then

################ Si le fichier existe, sortir de la boucle
boucle=stop;
echo "Tout les fichier sont disponible $thisdate";
else

################ Si pas Telecharger le fichier
wget -P *LIEN du SITE securise desole je peut pas poster*
fi

############### Decrementre 24 heure du jour
datestamp=$(($datestamp - 86400))
############### Optionnel Pour eviter un boucle sans fin
i=$(($i + 1))
if [ $i = 100 ]; then boucle=stop; fi
done
############## Fin du boucle While

et puis  fait

crontab -e

et enfin j'insere mon cron

00 14 * * *  /media/archives/actv/jt/videos/bash.sh

mais voila, le script se lance PAS sad et sa me gave
quelqu'un a une idee sur le suject?Merci de votre patience et votre aide smile

Dernière modification par Emmo30 (Le 12/06/2009, à 14:00)

Hors ligne

#2 Le 10/06/2009, à 15:10

tekpi

Re : [Résolu] lancer du bash avec crontab

1/ Est-ce que tu as reloadé ta crontab? (/etc/init.d/cron reload)
2/ Est-ce que ton script est bien exécutable? (chmod +x nom_du_fichier)
3/ lorsque tu lances ton script à la main, as-tu des erreurs en retour?
4/ regardes dans tes logs (je crois /var/log/message ou /var/log/syslog, il te dit s'il exécute bien ton script ou te donne des raisons si non)

à toi


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi

Hors ligne

#3 Le 10/06/2009, à 16:14

Emmo30

Re : [Résolu] lancer du bash avec crontab

Merci, de ta reponse je commencer a désespéré,
Bon je repond a tes question,
1) je rebooter mon pc a chaque fois que j'ai editer crontab.
2) oui j'avai mis le chmod en 777 pour le fichier et apres que tu ma demander j'ai meme mit le chown avec l'utilisateur actuel. sans resultat.
3) mon script marche a meirveille manuellement, aucune erreur.
4) pour mes log voici se qui me retourne

Jun 10 15:33:01 leopold /USR/SBIN/CRON[6598]: (miloud) CMD (/media/archives/actv/jt/videos/bash.sh)
Jun 10 15:33:16 leopold dhclient: DHCPREQUEST of <null address> on eth0 to 218.1.1.1 port 67
Jun 10 15:33:16 leopold dhclient: DHCPACK of 218.1.1.37 from 218.1.1.1
Jun 10 15:33:16 leopold dhclient: bound to 218.1.1.37 -- renewal in 2995 seconds.
Jun 10 15:33:16 leopold NetworkManager: <info>  DHCP daemon state is now 3 (renew) for interface eth0
Jun 10 15:33:45 leopold ypbind[5241]: broadcast: RPC: Timed out.
Jun 10 15:34:59 leopold ypbind[5241]: broadcast: RPC: Timed out.
Jun 10 15:36:13 leopold ypbind[5241]: broadcast: RPC: Timed out.

une idee?

Hors ligne

#4 Le 10/06/2009, à 20:42

Sarathai

Re : [Résolu] lancer du bash avec crontab

J'ai le même problème smile Enfin presque moi j'ai : /bin/sh: save: not found
Si vous avez une idée? smile

Hors ligne

#5 Le 10/06/2009, à 20:55

Hizoka

Re : [Résolu] lancer du bash avec crontab

perso j'utilise la commande : bash mon_fihicer.sh

et ca fonctionne mes bash avec cron...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 11/06/2009, à 00:38

Emmo30

Re : [Résolu] lancer du bash avec crontab

Salut, je connai la commande

sh NOM_DU_FICHIER.sh

mais moi il me faut un moyen de le faire tourner tout les jour sad.
Personne n'a une solution pour moi ?

Hors ligne

#7 Le 11/06/2009, à 00:51

Hizoka

Re : [Résolu] lancer du bash avec crontab

euu je ne sais pas si on s'est compris :

je dis que moi je fais ca :

00 14 * * * bash /media/archives/actv/jt/videos/bash.sh

sh et bash c'est different apparament.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#8 Le 11/06/2009, à 02:16

Emmo30

Re : [Résolu] lancer du bash avec crontab

Ah bon ????
Demain au boulot je test sa A la premiere heure XD,
Putain si sa marche sa Hizoka, je sais vraiment pas comment te remercier smile, demain je te dit quoi
Merci Bonne nuit.

Sarathai a écrit :

J'ai le même problème smile Enfin presque moi j'ai : /bin/sh: save: not found
Si vous avez une idée? smile

assure toi de bien precisser le chemin exacte de ton bash en commençant bien évidemment par la racine "/"PUIS_LES_SOUS_DOSSIERS"/"PUIS_LE_FICHIER.sh

si pas montre moi ton cron pour te dire quoi.

Dernière modification par Emmo30 (Le 11/06/2009, à 02:40)

Hors ligne

#9 Le 11/06/2009, à 07:44

thurston

Re : [Résolu] lancer du bash avec crontab

salut, vires tout les echo (# devant).
Lorsque tu lances une tache cron, echo ne va nul part (pas de terminal ouvert), et ca fait planter le script. C'est très vicieux je trouve, et j'y ai passé des heures aussi.
En esperant que cela t'aide
A+
Thurston

Pour ma part après avoir longtemps galéré avec crontab, je ne passe plus que par
sudo gedit /etc/crontab et plus crontab -e.
Tu renseignes le nom de l'auteur de la tache et c'est fini. On ne sait pas trop ou trouver les job de crontab -e, et ca complique pour rien.

Encore pour ma part, tous mes scripts sont sous
/usr/local/scripts (droits pour tout le monde au début pour test), verifies bien que le script es executable. (une tache cron ne doit jamais etre tenté sur un script non testé en terminal avant, bien sur)
mes taches cron sont comme cela par exemple (tu pourrais aussi bien sur mettre un autre user que root)
@reboot         root    /usr/local/scripts/wakeserver

Dernière modification par thurston (Le 11/06/2009, à 08:11)

Hors ligne

#10 Le 11/06/2009, à 10:47

Emmo30

Re : [Résolu] lancer du bash avec crontab

non sa ne fonctionne toujour pas pourtant j'ai bien ceci

Jun 11 10:23:01 leopold /USR/SBIN/CRON[9466]: (miloud) CMD (bash /media/archives/actv/jt/videos/bash.sh)

hmm je tourne en rond

Hors ligne

#11 Le 11/06/2009, à 11:26

lukophron

Re : [Résolu] lancer du bash avec crontab

regarde les messages dans /var/mail
normalement, avec ça et les logs tu auras toutes les clés pour corriger


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#12 Le 11/06/2009, à 11:34

mickbad

Re : [Résolu] lancer du bash avec crontab

Hello,

Question bête : est-tu sur que ton script ne se lance pas ?
Moi ce que je vois dans ton message log, c'est que le script se lance qd même

Je viens d'essayer chez moi ton script et c'est vrai qu'on n'a pas l'impression que ça marche car les .flv semblent être nul part. D'ailleurs c'est vrai, tu n'indiques pas où tu dois les déposer (ou alors ce n'est pas explicite pour moi wink )

Pour voir si un script fonctionne, il faut faire un log interne sur un fichier où tu es sûr de pouvoir le récupérer. Pour tester ton script, j'ai mis tout en haut ceci

echo $(date) >> /tmp/monscript.log

J'ai configuré le cron et j'ai bien vu la date de lancement dans /tmp/monscript.log ==> le script est bien lancé !
Seulement, je n'ai pas trouvé trace de mes fichiers téléchargés. Pour info, j'ai changé la phrase de wget en ce qui suit pour avoir quelque chose à télécharger wink

wget  http://admintools/text.csv -O $date

Cela peut-il te donner une piste de réflexion ?

Franchement, essaye de mettre un log pour être sûr que ton problème vienne du cron ou de ton script

Mick


Somewhere in town

Hors ligne

#13 Le 11/06/2009, à 11:40

mickbad

Re : [Résolu] lancer du bash avec crontab

lukophron a écrit :

regarde les messages dans /var/mail
normalement, avec ça et les logs tu auras toutes les clés pour corriger

Euh je ne vois pas trop comment tu pourrais avoir plus de clés avec /var/mail à moins que la variable MAILTO soit configuré dans le crontab auquel cas les sorties des scripts sont envoyées par email à MAILTO.

Et puis /var/mail contient les mailbox, mieux vaut utiliser l'interface mail directement sur la console .. plus user-friendly smile

Je viens de regarder après mon test (description post #12), et effectivement j'ai du courrier (hourra!) qui est la sortie de mon script ... mais je n'ai pas encore trouvé où sont mes .flv que j'étais censé télécharger, héhé !


Mick

[EDIT]
J'ai trouvé où sont mes fichiers téléchargés => à la racine du profil root !
normal car j'ai fait un crontab à partir de root et que le répertoire de lancement est justement /root

ouf, j'ai cru rêvé un peu de ne plus les retrouver big_smile

Dernière modification par mickbad (Le 11/06/2009, à 11:44)


Somewhere in town

Hors ligne

#14 Le 11/06/2009, à 11:44

Tycho Brahe

Re : [Résolu] lancer du bash avec crontab

thurston a écrit :

salut, vires tout les echo (# devant).
Lorsque tu lances une tache cron, echo ne va nul part (pas de terminal ouvert), et ca fait planter le script.

Ou alors tu rediriges tout simplement les sortie standard et erreur standard, par exemple vers /dev/null si tu ne veux pas les conserver.

Bref,

0 14 * * *  /media/archives/actv/jt/videos/bash.sh >& /dev/null

Loi de Newton :
Si tu restes à glander sous le pommier, tu pourrais bien prendre une pomme sur la gueule.

Hors ligne

#15 Le 11/06/2009, à 11:49

mickbad

Re : [Résolu] lancer du bash avec crontab

Tycho Brahe a écrit :
thurston a écrit :

salut, vires tout les echo (# devant).
Lorsque tu lances une tache cron, echo ne va nul part (pas de terminal ouvert), et ca fait planter le script.

Ce n'est pas vraiment vrai, le script ne va pas planté parce que tu fais une sortie sur console

En fait, quand tu lances un script qui fait des echo dans un cron, la sortie est envoyée par email si la variable MAILTO est définie dans le crontab, sinon c'est "jetée à la poubelle"

Je n'ai pas vu de script qui plantait dans le cron parce qu'on faisait une sortie écran !

Mick

Dernière modification par mickbad (Le 11/06/2009, à 11:49)


Somewhere in town

Hors ligne

#16 Le 11/06/2009, à 11:53

lukophron

Re : [Résolu] lancer du bash avec crontab

mickbad a écrit :

Euh je ne vois pas trop comment tu pourrais avoir plus de clés avec /var/mail à moins que la variable MAILTO soit configuré dans le crontab auquel cas les sorties des scripts sont envoyées par email à MAILTO.

...

Je viens de regarder après mon test (description post #12), et effectivement j'ai du courrier (hourra!) qui est la sortie de mon script ... mais je n'ai pas encore trouvé où sont mes .flv que j'étais censé télécharger, héhé !

euh, donc tu me dis non, et pi tu regardes et tu les trouves... donc ...


Le danger avec les glands est qu'ils prennent racines.
Corneille

Hors ligne

#17 Le 11/06/2009, à 12:04

mickbad

Re : [Résolu] lancer du bash avec crontab

parce que j'étais entrain de chercher, voyons !
d'où le EDIT à la fin du post ... donc ...

maintenant laissons Emmo30 répondre pour voir si mon hypothèse marche
je n'ai pas la science infuse (ouf) mais je teste ce qu'il me donne wink


Somewhere in town

Hors ligne

#18 Le 11/06/2009, à 17:42

Emmo30

Re : [Résolu] lancer du bash avec crontab

Je vous remercie de votre reponse, bon Mon cron marche car quand je met

[Mickbad]echo $(date) >> /tmp/monscript.log

au debut de mon bash
sa me cree un log avec la date du cron.

mais bon alors sa veut dire que mon wget marche pas.:/ je vais revoir le wget.

Hors ligne

#19 Le 11/06/2009, à 20:42

Uggy

Re : [Résolu] lancer du bash avec crontab

- Ton script est tellment compliqué a lire.. que je ne suis meme pas sur d'avoir compris exactement ce que tu veux faire

Essaye celui ci qui devrait faire a peu pres pareil

- Les variables d'environnement de la cron sont différentes de celles quand tu lances le script toi meme.. c'est souvent la cause d'un script qui ne fonctionne pas...
Un exemple typique de variable est le PATH qui parfois est différent.. donc par  exemple il vaut mieux indiqué les chemins complets des binaires

Le script ci dessous fonctionne en cron:

#!/bin/bash

DATE=`/bin/date "+%d.%m.%Y--%Hh%Mm"`
REP="/tmp"
FICHIER=$REP/$DATE.avi
URL="http://xxxxx"



if [ -e $FICHIER ]
then
   echo "Fichier existe"
else
   cd $REP
   /usr/bin/wget $URL
fi

Dernière modification par Uggy (Le 11/06/2009, à 20:45)

Hors ligne

#20 Le 12/06/2009, à 13:59

Emmo30

Re : [Résolu] lancer du bash avec crontab

Problème résolu, sa venais juste de /usr/bin/wget.

Je remercie tout le monde pour votre participation.

Hors ligne