Crontab
Résolu/Fermé
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
-
23 juin 2014 à 19:44
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - 27 juin 2014 à 13:07
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - 27 juin 2014 à 13:07
19 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
24 juin 2014 à 08:59
24 juin 2014 à 08:59
Salut,
# Tous les dernier mardis de chaque mois à 00H00Y'a pas ça en magasin ;-(
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 24/06/2014 à 09:14
Modifié par dubcek le 24/06/2014 à 09:14
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)
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 24/06/2014 à 12:15
Modifié par xunil2003 le 24/06/2014 à 12:15
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.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
24 juin 2014 à 12:22
24 juin 2014 à 12:22
mais comment dire à mail d'envoyer l'email quand ce sera le 24 du mois par exemple ?En testant en début de script si la date du jour correspond à la valeur renvoyée par la commande de dubcek ;-\
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 24/06/2014 à 12:32
Modifié par dubcek le 24/06/2014 à 12:32
en exécutant le script tous les jours et en testant si date +%d == $m2 alors deuxième mardi ou == $md dernier mardi
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 24/06/2014 à 14:13
Modifié par xunil2003 le 24/06/2014 à 14:13
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 24/06/2014 à 14:12
Modifié par dubcek le 24/06/2014 à 14:12
affiche le résultat de :
ncalentre balises code
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 24/06/2014 à 14:29
Modifié par xunil2003 le 24/06/2014 à 14:29
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
24 juin 2014 à 14:40
24 juin 2014 à 14:40
à 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
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
24 juin 2014 à 15:09
24 juin 2014 à 15:09
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
24 juin 2014 à 15:25
24 juin 2014 à 15:25
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
24 juin 2014 à 15:38
24 juin 2014 à 15:38
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
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 24/06/2014 à 16:57
Modifié par xunil2003 le 24/06/2014 à 16:57
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 25/06/2014 à 08:51
Modifié par dubcek le 25/06/2014 à 08:51
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
25 juin 2014 à 11:02
25 juin 2014 à 11:02
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
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 25/06/2014 à 17:11
Modifié par xunil2003 le 25/06/2014 à 17:11
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 26/06/2014 à 09:15
Modifié par dubcek le 26/06/2014 à 09:15
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
26 juin 2014 à 09:44
26 juin 2014 à 09:44
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
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 26/06/2014 à 12:41
Modifié par xunil2003 le 26/06/2014 à 12:41
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.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
26 juin 2014 à 13:46
26 juin 2014 à 13:46
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 $
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 26/06/2014 à 13:58
Modifié par dubcek le 26/06/2014 à 13:58
effectivement, bien que chez moi:
$ read M2 MD <<<$(ncal | awk -v d=Th '$1 ~ d {print $3, $NF}'); J=$(date +%d)
$ echo $M2 $MD | cat -A
12 26$
$ echo "${M2} ${MD}" | cat -A
12 26$
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
Modifié par zipe31 le 26/06/2014 à 14:02
Modifié par zipe31 le 26/06/2014 à 14:02
Il m'a fallu un moment pour trouver d'où venaient les caractères zarbis ;-\
Voilà ce que me renvoyait le shell (set -x) :
Voilà ce que me renvoyait le shell (set -x) :
+ '[' 26 -eq 12 ']'
+ '[' 26 -eq $'_\b2_\b6' ']'
./plop: ligne 12 : [: 26 : nombre entier attendu comme expression
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 26/06/2014 à 14:08
Modifié par dubcek le 26/06/2014 à 14:08
mon ncal supprime les effets video si il y a un pipe ou >
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
26 juin 2014 à 14:12
26 juin 2014 à 14:12
Idem sous Debian (pas d'effet avec un pipe). Par contre sous Mint les effets restent ;-\
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 26/06/2014 à 23:56
Modifié par xunil2003 le 26/06/2014 à 23:56
Bonsoir,
Le serveur est sur Debian Wheezy 3.0.4.
Merci.
Le serveur est sur Debian Wheezy 3.0.4.
Merci.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
27 juin 2014 à 08:45
27 juin 2014 à 08:45
et avec ncal -h ?
placer un set -x au début du script
placer un set -x au début du script
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 27/06/2014 à 13:08
Modifié par xunil2003 le 27/06/2014 à 13:08
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.