Crontab
Résolu
xunil2003
Messages postés
830
Statut
Membre
-
xunil2003 Messages postés 830 Statut Membre -
xunil2003 Messages postés 830 Statut Membre -
Bonjour,
Je voudrais recevoir une alerte via crontab
* Tous les 2em mardis de chaque mois.
* Tous les dernier mardis de chaque mois.
Personnellement je n'ai pas trouvé la bonne formule dans crontab
Merci.
Je voudrais recevoir une alerte via crontab
* Tous les 2em mardis de chaque mois.
* Tous les dernier mardis de chaque mois.
Personnellement je n'ai pas trouvé la bonne formule dans crontab
# Tous les 2em mardis de chaque mois à 00H00
00 00 2-7 * 2 bash /home/serveur/scripts/crontab/envoi-mail-assoc-deuxieme-mardis.sh
# Tous les dernier mardis de chaque mois à 00H00
Je n'arrive pas a trouvé la formule
Merci.
19 réponses
hello
dans un script à exécuter tous les jours, plutot qu'une ligne cron
m2 c'est le 2ème mardi du mois, md le dernier
dans un script à exécuter tous les jours, plutot qu'une ligne cron
m2 c'est le 2ème mardi du mois, md le dernier
read m2 md <<<$(ncal | awk '/^Tu/ {print $3, $NF}')
et on teste avec $(date +%d)
Bonjour,
Avec :
Résultat :
Ok mais comment dire à mail d'envoyer l'email quand ce sera le 24 du mois par exemple ?
Merci.
Avec :
read m2 md <<<$(ncal | awk '/^Tu/ {print $3, $NF}')
echo "Le dernier mardi du mois de $(date +%B) est le : $(date +%d)"
Résultat :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-dernier-mardis.sh
Le dernier mardi du mois de juin est le : 24
serveur@debian:~$
Ok mais comment dire à mail d'envoyer l'email quand ce sera le 24 du mois par exemple ?
message="Le corps du message"
sujet="Le sujet du message"
destinataire="mail.mail@fai.fr"
echo "$message" | mail -v -s "$sujet" $fichier $destinataire
Merci.
Re,
Y a un problème ?
ncal est en français chez moi
Test :
Avec :
Résultat :
Merci.
Y a un problème ?
date: opérande supplémentaire « == »
Saisissez « date --help » pour plus d'informations.
ncal est en français chez moi
serveur@debian:~$ ncal
Juin 2014
lu 2 9 16 23 30
ma 3 10 17 24
me 4 11 18 25
je 5 12 19 26
ve 6 13 20 27
sa 7 14 21 28
di 1 8 15 22 29 serveur@debian:~$
Test :
serveur@debian:~$ ncal | awk '/^ma/ {print $3, $NF}'
10 24
serveur@debian:~$
Avec :
read m2 md <<<$(ncal | awk '/^ma/ {print $3, $NF}')
echo "Le 2em mardi du mois de $(date +%B) est : $m2" #$(date +%d)"
echo "Le dernier mardi du mois de $(date +%B) est : $md" #$(date +%d)"
echo
echo "2em mardis de chaque mois : date +%d == $m2"
date +%d == $m2
echo
echo "Dernier mardis de chaque mois : date +%d == $md"
date +%d == $md
Résultat :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
Le 2em mardi du mois de juin est : 10
Le dernier mardi du mois de juin est : 24
2em mardis de chaque mois : date +%d == 10
date: opérande supplémentaire « == »
Saisissez « date --help » pour plus d'informations.
Dernier mardis de chaque mois : date +%d == 24
date: opérande supplémentaire « == »
Saisissez « date --help » pour plus d'informations.
serveur@debian:~$
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Voilà le résultat :
Merci.
Voilà le résultat :
serveur@debian:~$ ncal
Juin 2014
lu 2 9 16 23 30
ma 3 10 17 24
me 4 11 18 25
je 5 12 19 26
ve 6 13 20 27
sa 7 14 21 28
di 1 8 15 22 29
serveur@debian:~$
serveur@debian:~$ date
mardi 24 juin 2014, 14:27:43 (UTC+0200)
serveur@debian:~$
serveur@debian:~$ date +%d == 24
date: opérande supplémentaire « == »
Saisissez « date --help » pour plus d'informations.
serveur@debian:~$
Merci.
à exécuter chaque jour
#!/bin/bash
read M2 MD <<<$(ncal | awk '/^ma/ {print $3, $NF}'); J=$(date +%d)
if [ $J -eq $M2 ]; then
echo 2eme mardi
else
if [ $J -eq $MD ]; then
echo dernier mardi
else
echo journée banale et affligeante
fi
fi
Re,
Heu y a une erreur !
Avec :
Le résultat est :
Merci.
Heu y a une erreur !
/home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh: ligne 26 : [: 24 : nombre entier attendu comme expression
Avec :
read M2 MD <<<$(ncal | awk '/^ma/ {print $3, $NF}'); J=$(date +%d)
if [ $J -eq $M2 ]; then
echo 2eme mardi
else
if [ $J -eq $MD ]; then
echo dernier mardi
else
echo journée banale et affligeante
fi
fi
Le résultat est :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
/home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh: ligne 26 : [: 24 : nombre entier attendu comme expression
journée banale et affligeante
serveur@debian:~$
Merci.
affiche les lignes numérotées pour voir la 26
chez moi
chez moi
$ head -13 f1
#!/bin/bash
read M2 MD <<<$(ncal | awk '/^Tu/ {print $3, $NF}'); J=$(date +%d)
if [ $J -eq $M2 ]; then
echo 2eme mardi
else
if [ $J -eq $MD ]; then
echo dernier mardi
else
echo journée banale et affligeante
fi
fi
$ ./f1
dernier mardi
ou essayer avec case
read M2 MD <<<$(ncal | awk '/^ma/ {print $3, $NF}'); J=$(date +%d)
case $J in
$M2) echo 2eme mardi ;;
$MD) echo dernier mardi ;;
*) echo journée banale et affligeante ;;
esac
Re,
Les cases doivent être écrit en dur il me semble.
mais ça marche pas nom plus.
Avec :
Résultat :
Je pense que la meilleure solution était votre avant dernier code.
Mais qu'est-ce qui fait qui nous différents si le résultat du code ?
Merci.
Les cases doivent être écrit en dur il me semble.
mais ça marche pas nom plus.
Avec :
read M2 MD <<<$(ncal | awk '/^ma/ {print $3, $NF}'); J=$(date +%d)
echo "J - Nous somme le : $J"
echo "M2 - Le 2em mardi de ce mois est le : $M2"
echo "MD - Le dernier mardi de ce mois est le : $MD"
echo
case $J in
$M2) echo 2eme mardi ;;
$MD) echo dernier mardi ;;
*) echo journée banale et affligeante ;;
esac
Résultat :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
J - Nous somme le 24
M2 - Le 2em mardi de ce mois est le : 10
MD - Le dernier mardi de ce mois est le : 24
journée banale et affligeante
serveur@debian:~$
Je pense que la meilleure solution était votre avant dernier code.
Mais qu'est-ce qui fait qui nous différents si le résultat du code ?
Merci.
pour l'avant dernier code, montre les lignes numérotées, pour voir la 26
quel système ?
si je change ^ma par ^We (je laisse mardi dans les echo) ca marche avec le code précédent, on est bien le dernier We du mois
quel système ?
si je change ^ma par ^We (je laisse mardi dans les echo) ca marche avec le code précédent, on est bien le dernier We du mois
$ ./f1
J - Nous somme le : 25
M2 - Le 2em mardi de ce mois est le : 11
MD - Le dernier mardi de ce mois est le : 25
dernier mardi
essayer
#!/bin/bash
read M2 MD <<<$(ncal | awk '/^ma/ {print $3, $NF}'); J=$(date +%d)
if [ $J -eq $M2 ]; then
echo 2eme mardi
elif [ $J -eq $MD ]; then
echo dernier mardi
else
echo journée banale et affligeante
fi
Re,
Pour l'instant il me répond :
Date actuel :
Impossible de modifier la date :
Merci.
Pour l'instant il me répond :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.shJe n'arrive pas a mettre la date au 24/06/2014 pour faire un test .
J - Nous somme le : 25
M2 - Le 2em mardi de ce mois est le : 10
MD - Le dernier mardi de ce mois est le : 24
journée banale et affligeante
serveur@debian:~$
Date actuel :
serveur@debian:~$ date
mercredi 25 juin 2014, 17:07:37 (UTC+0200)
serveur@debian:~$
Impossible de modifier la date :
root@debian:/home/serveur# date -s "24/06/2014"
date: date non valide « 24/06/2014 »
root@debian:/home/serveur#
Merci.
pour la date essayer: date -s "6/24/2014"
pour tester changer le jour dans le awk (^ma) plutot que changer la date du système, on est à la fin du mois, dernier jeudi
pour tester changer le jour dans le awk (^ma) plutot que changer la date du système, on est à la fin du mois, dernier jeudi
reconnait le jour:
#!/bin/bash
s=(lundi mardi mercredi jeudi vendredi samedi dimanche)
#wd=(Mo Tu We Th Fr Sa Su)
wd=(lu ma me je ve sa di)
j=${s[$(date +%u)-1]}; d=${wd[$(date +%u)-1]} ;
read M2 MD <<<$(ncal | awk -v d=$d '$1 ~ d {print $3, $NF}'); J=$(date +%d)
if [ $J -eq $M2 ]; then
echo 2eme $j
elif [ $J -eq $MD ]; then
echo dernier $j
else
echo journée banale et affligeante
fi
Bonjour,
Mon os est : Kubuntu 12.04.4 LTS.
Je n'y avais pas pensé de changer dans le awk (^ma) plutot que de changer la date du système.
Avec :
j'ai ce message d'erreur :
2em test
Et avec ce code :
Avec comme retour :
Je n'arrive pas a comprendre pourquoi chez vous ça marche et chez moi non ????
Merci.
Mon os est : Kubuntu 12.04.4 LTS.
Je n'y avais pas pensé de changer dans le awk (^ma) plutot que de changer la date du système.
Avec :
serveur@debian:~$ cat -n /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
1 #!/bin/bash
2
3
4
5
6 read M2 MD <<<$(ncal | awk '/^je/ {print $3, $NF}'); J=$(date +%d)
7 echo "J - Nous somme le : $J"
8 echo "M2 - Le 2em mardi de ce mois est le : $M2"
9 echo "MD - Le dernier mardi de ce mois est le : $MD"
10 echo
11
12 read M2 MD <<<$(ncal | awk '/^je/ {print $3, $NF}'); J=$(date +%d)
13 if [ $J -eq $M2 ]; then
14 echo 2eme mardi
15 elif [ $J -eq $MD ]; then
16 echo dernier mardi
17 else
18 echo journée banale et affligeante
19 fi
serveur@debian:~$
j'ai ce message d'erreur :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
J - Nous somme le : 26
M2 - Le 2em mardi de ce mois est le : 12
MD - Le dernier mardi de ce mois est le : 26
/home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh: ligne 15 : [: 26 : nombre entier attendu comme expression
journée banale et affligeante
serveur@debian:~$
2em test
Et avec ce code :
serveur@debian:~$ cat -n /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
1 #!/bin/bash
2
3
4 s=(lundi mardi mercredi jeudi vendredi samedi dimanche)
5 #wd=(Mo Tu We Th Fr Sa Su)
6 wd=(lu ma me je ve sa di)
7 j=${s[$(date +%u)-1]}; d=${wd[$(date +%u)-1]} ;
8 read M2 MD <<<$(ncal | awk -v d=$d '$1 ~ d {print $3, $NF}'); J=$(date +%d)
9 if [ $J -eq $M2 ]; then
10 echo 2eme $j
11 elif [ $J -eq $MD ]; then
12 echo dernier $j
13 else
14 echo journée banale et affligeante
15 fi
16 echo "J - Nous somme le : $J"
17 echo "M2 - Le 2em mardi de ce mois est le : $M2"
18 echo "MD - Le dernier mardi de ce mois est le : $MD"
19 echo
20
21
22 exit 0
Avec comme retour :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
/home/serveur/scripts/crontab/envoi-mail-gullivar-mardis.sh: ligne 34 : [: 26 : nombre entier attendu comme expression
journée banale et affligeante
J - Nous somme le : 26
M2 - Le 2em mardi de ce mois est le : 12
MD - Le dernier mardi de ce mois est le : 26
serveur@debian:~$
Je n'arrive pas a comprendre pourquoi chez vous ça marche et chez moi non ????
Merci.
Salut,
Rajoute l'option "-h" à
Voilà comment est vue ta variable $MD :
Ci-dessous la différence sans et avec l'option -h :
Rajoute l'option "-h" à
ncal.
Voilà comment est vue ta variable $MD :
$ echo "${MD}" | cat -A
_^H2_^H6$
Ci-dessous la différence sans et avec l'option -h :
$ ncal | cat -A
Juin 2014 $
lu 2 9 16 23 30$
ma 3 10 17 24 $
me 4 11 18 25 $
je 5 12 19 _^H2_^H6 $
ve 6 13 20 27 $
sa 7 14 21 28 $
di 1 8 15 22 29 $
$ ncal -h | cat -A
Juin 2014 $
lu 2 9 16 23 30$
ma 3 10 17 24 $
me 4 11 18 25 $
je 5 12 19 26 $
ve 6 13 20 27 $
sa 7 14 21 28 $
di 1 8 15 22 29 $
Bonjour,
Avec :
Il m'affiche correctement que nous sommes le dernier Vendredi du mois.
Si je remplace dans le code
Je pense que c'est bon maintenant.
Merci.
Avec :
serveur@debian:~$ cat -n /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.shVous remarquerez que j'ai m'y l'option -h à ncal.
1 #!/bin/bash
2
3
4 read M2 MD <<<$(ncal -h | awk '/^ve/ {print $3, $NF}'); J=$(date +%d)
5 if [ $J -eq $M2 ]; then
6 echo 2eme mardi
7 else
8 if [ $J -eq $MD ]; then
9 echo dernier mardi
10 else
11 echo journée banale et affligeante
12 fi
13 fi
14 echo
15 echo "J - Aujourd'hui nous sommes le : $J"
16 echo "M2 - Le 2em mardi de ce mois est le : $M2"
17 echo "MD - Le dernier mardi de ce mois est le : $MD"
18 echo
19
20 exit 0
serveur@debian:~$
Il m'affiche correctement que nous sommes le dernier Vendredi du mois.
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
dernier mardi
J - Aujourd'hui nous sommes le : 27
M2 - Le 2em mardi de ce mois est le : 13
MD - Le dernier mardi de ce mois est le : 27
serveur@debian:~$
Si je remplace dans le code
awk '/^ve/par
awk '/^ma/il me retourne :
serveur@debian:~$ bash /home/serveur/scripts/crontab/envoi-mail-assoc-mardis.sh
journée banale et affligeante
J - Aujourd'hui nous sommes le : 27
M2 - Le 2em mardi de ce mois est le : 10
MD - Le dernier mardi de ce mois est le : 24
serveur@debian:~$
Je pense que c'est bon maintenant.
Merci.