logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 22-06-2010 20:58:11

françoise
Membre
Inscription : 15-06-2010

[resolu]anniversaires du jour

Bonsoir à tous,

existe t-il un moyen d'être averti des anniversaires du jour sous forme de petit script par exemple? avez-vous déjà essayé? comment faire?
merci à l'avance de vos réponses:)

Dernière modification par françoise (24-06-2010 10:22:51)

Hors ligne

#2 22-06-2010 21:17:58

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [resolu]anniversaires du jour

Salut francoise,

Je dirai utiliser crontab et la commande echo smile
http://debian-facile.org/doc:systeme:crontab
http://debian-facile.org/doc:systeme:echo

Amitié, Jojo

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#3 22-06-2010 21:52:36

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

merci Smolki
je sais bien utiliser crontab mais pas la commande (le dernier champ) pour automatiser tout cela
tant qu'à écho, je ne vois pas
@+
françoise

Hors ligne

#4 22-06-2010 22:13:24

anonyme
Invité

Re : [resolu]anniversaires du jour

Bonjour,

Un début de piste peut-être, à améliorer...
1) Création d'un fichier annif:

$ cat >anniftest.txt <<EOF
> 22/01/1985  Moi
> 10/06/2004  un_autre
> 22/06/1963  lui
> 22/06/1874  elle
> 5/11/2000   sa_soeur
> EOF


2) utilisation:

$ grep `date +%d/%m` anniftest.txt
22/06/1963  lui
22/06/1874  elle


Ensuite il faut bien entendu en faire une tâche cron. wink

@+

#5 23-06-2010 08:07:04

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

Bonjour tux12!
merci de ton aide!

je n'y arrive pas, je ne connais pas du tout EOF et j'e l'ai testé sans succés...

j'ai aussi fait vi anniversaires contenant
Jean-Louis=23/06/2010
test=23/06/2010
test2=24/06/2010
un crontab avec  plusieurs tests dont : 00 9 * * * grep `date +%d/%m` anniversaires

03 9 * * * grep `date +%d/%m` anniversaires.txt
mais rien....

Hors ligne

#6 23-06-2010 08:33:43

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [resolu]anniversaires du jour

Salut francoise, pour la balise EOF regarde la commande cat ici :
http://debian-facile.org/doc:systeme:ca … de_fichier

EOF est utilisé pour baliser le début et la fin de ce que tu écris et ne commande plus.
Comme indiqué, tu peux tout aussi bien marquer PROUT pour baliser ton texte écrit.

Pour le crontab, as-tu regardé le tuto que je t"ai proposé dans ma première réponse ?
http://debian-facile.org/doc:systeme:crontab

Amitié, Jojo wink

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#7 23-06-2010 10:47:01

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

hello Smolski,
ben c'est pas gagné!
j'ai édité un fichier "anniversaires"
le crontab, j'ai regardé, mais ça ne me dit pas quelle commande effectuer au bout
00 9  * * * echo -n "c'est l'anniversaire de"?
ou encore : crontab -l
# m h  dom mon dow   command

0 9 * * * echo "tous les jours à 9 h 00"

en tout cas, ça ne marche pas non plus
désolée, mais je n'y comprends rien
merci beaucoup!

Dernière modification par françoise (23-06-2010 12:28:47)

Hors ligne

#8 23-06-2010 17:26:34

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [resolu]anniversaires du jour

@francoise

Je trouve ton idée très intéressante au final.

Voilà ce que j'ai fait en test, il faudra l'améliorer au cas par cas smile

Créer un script ainsi :

faire le repertoire des scripts dans le /home/user :

$ mkdir /home/user/scripts


y créer le fichier du script ainsi :

$ vim /home/user/scripts/script_ann.sh


et écrire :

#!/bin/sh

# créer un fichier anniversaire

echo Joyeux Anniversaire ! > ~/Desktop/Anniversaire.txt


ouvrir le crontab ainsi :

$ crontab -e


et rédiger la date anniversaire à la place des * (étoiles) :

 # m h  dom mon dow   command

20   18   23   6   *   /home/user/scripts/script_ann.sh


où :

user = ton nom d'user
20 = 20 mn
18 = 18 h
23 = le 23 ème jour du mois
6 = juin (sixième mois)
* = (un jour de semaine pour répéter un message hebdomadairement)
/home/user/scripts/script_ann.sh = la commande ou le script à lancer le 23 juin à 18 h 20 tous les ans


Hop !

De nombreuses idées peuvent être mise à la place de la création d'un répertoire... une image, un telechargement depuis la toile.. etc !

Merci au captnfab pour son bon sens et sa collaboration !

Amitié, Jojo


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#9 23-06-2010 20:00:06

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

Bonsoir smolski
merci à vous deux de votre aide!
une petite précision : si j'entre le nom et date anniversaire dans le fichier script_ann.sh des personnes concernées, faut-il que je mette aussi une liste de toutes mes dates, donc plusieurs lignes dans crontab afin que le script se lance à la date voulue pour chacun d'entre eux?

aussi, ça correspond à quoi .sh, parce que je suis toujours entrain de chercher dans "le dernier champ", la commande à effectuer pour dire par exemple comment m'avertir, où récupérer les informations etc...
merci encore pour tout!
amitié
françoise

Hors ligne

#10 23-06-2010 21:05:18

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [resolu]anniversaires du jour

@francoise

On va faire dans l'ordre :

Le script se termine par l'extension .sh car son nom est : script_ann.sh.

si j'entre le nom et date anniversaire dans le fichier script_ann.sh des personnes concernées, faut-il que je mette aussi une liste de toutes mes dates


oui, il faut configurer le cron pour chacune des date anniversaires. smile
Tu peux le faire d'un coup ou en rajouter quand tu le veux smile

D'ailleurs, à la réflexion, je vais te proposer de ne configurer que le cron sans écrire de script smile

tu ouvres le cron :
$ crontab -e

Sous l'entête commenté avec un dièse :

# m h  dom mon dow   command


tu écris la même ligne pour chacune des dates :

30  10   01  01   *   echo date 01/01/ anniversaire de toto > ~/Desktop/Anniversaire.txt
30  10   01  02   *   echo date 01/02/ anniversaire de tata > ~/Desktop/Anniversaire.txt
30  10   01  03   *   echo date 01/03/ anniversaire de toto > ~/Desktop/Anniversaire.txt


Tu enregistres et tu fermes le cron.

Première ligne ajoutée, nous lisons que :
à 10h 30 du 01/01 de chaque année la commande echo fabriquera un fichier texte nommé Anniversaire.txt à destination du bureau de l'user.

Pour la date 01/01, le fichier contiendra les termes :

date 01/01/ anniversaire de toto


Et à chaque nouvelle date, un fichier identique apparaîtra pour chacun des autres anniversaire avec chacun la date anniversaire indiquée individuellement.

Si tu désire rajouter, par exemple la date anniversaire de tintin qui est le 01/04, tu ouvres le cron :

$ crontab -e


et tu rajoutes cette date dans les mêmes termes :

30  10   01  01   *   echo date 01/01/ anniversaire de toto > ~/Desktop/Anniversaire.txt
30  10   01  02   *   echo date 01/02/ anniversaire de tata > ~/Desktop/Anniversaire.txt
30  10   01  03   *   echo date 01/03/ anniversaire de toto > ~/Desktop/Anniversaire.txt
30  10   01  04   *   echo date 01/04/ anniversaire de tintin > ~/Desktop/Anniversaire.txt


À chaque fois, le fichier sera créé (ou son contenu modifié si tu l'as laissé) sur le bureau à 10h 30 de la date anniversaire.

Le marquage des dates n'a pas besoin d'être mis dans l'ordre comme ici.
dans le cron, nous avons :

mn  h   jour   mois   * 
l'appel de la commande echo
avec le texte : date 01/04/ anniversaire de tintin
la destination > ~/Desktop/ (sur le bureau)
dans le fichier Anniversaire.txt


Yep ?


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#11 23-06-2010 21:15:31

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

merci beaucoup Smolski, cette fois j'ai compris! même si j'ai mis du temps
ça va marcher cette fois, je vais pouvoir tester:)
un grand résolu!

Hors ligne

#12 23-06-2010 21:18:24

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [resolu]anniversaires du jour

@ francoise

Tu as compris de ne pas faire de script ?

Tu fais tout avec cron tranquillement smile
Fait des essais de date sur aujourd'hui et met les quelques minutes qui suivent l'heure, le jour et le mois de maintenant smile

Amitié, Jojo

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#13 23-06-2010 21:35:53

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

test réussi!
je vais pouvoir l'utiliser pour les rendez vous aussi;)
je serai toujours ennuyée avec le dernier champ, mais bon... j'ai déjà pas mal de modèles dans man 5 crontab

merci mille fois (et aussi à captnfab)
très efficaces comme toujours :-)

Hors ligne

#14 23-06-2010 21:44:50

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [resolu]anniversaires du jour

Alors francoise, tu peux editer le premier post par Modifier et ajouter [Résolu] à ton titre peut-être ? smile

Edit :

Le dernier champs ?
Tu veux dire la dernière * étoile à mettre ?

Elle concerne une date hebdomadaire de chaque jour du mois.
Si tu l'utilises, tu n'utilises pas le jour et le mois avec, juste les heures.
Cela permet par exemple de lancer un fichier de salutation qui dirait :
bonjour ! C'est Lundi aujourd'hui
Et ce tous les lundis de toutes les semaines. smile

Dernière modification par smolski (23-06-2010 21:50:20)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#15 24-06-2010 00:13:18

anonyme
Invité

Re : [resolu]anniversaires du jour

Bonjour, smile

Toujours avec le crontab, je me permets une version qui me paraît plus simple dans la mise en œuvre et l'utilisation;

On utilise simplement un fichier texte comme précédemment et on ajoute une ligne de ce style au crontab:

* * * * * grep `date +\%d\/\%m` /home/tux12/tmp/anniftest.txt >/home/tux12/Desktop/annif_du_jour.txt || rm /home/tux12/Desktop/annif_du_jour.txt


Sur la base de mon fichier texte précédent, un fichier contenant la date de naissance et le nom de la ou des personne(s), une par ligne, est créé, et s'il n'y à pas d'anniversaire ce jour, un éventuel fichier existant est détruit.

Il reste à adapter les chemins/noms à vos besoins et à préciser l'heure à laquelle on veut le lancer (les * * * * * ). A ce propos,

smolski a écrit :

Tu veux dire la dernière * étoile à mettre ?

Elle concerne une date hebdomadaire de chaque jour du mois.
Si tu l'utilises, tu n'utilises pas le jour et le mois avec, juste les heures.


En fait le cron se déclenche si les minutes, les heures et le mois, ainsi que l'un des deux derniers champs au moins, coincident. Les deux derniers champs c'est le jour du mois et le jour de la semaine; on peut ainsi spécifier par exemple "tous les lundis ET le premier jour du mois" avec * * * 1 1 .


Mais le crontab c'est pas top pour faire ça en fait. Il faudrait lancer le script à l'ouverture de session graphique, et afficher les anniversaires du jour dans une fenêtre popup. Il reste du boulot. wink

@+

Dernière modification par anonyme (24-06-2010 00:13:45)

#16 24-06-2010 09:17:37

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

Bonjour à tous!
tout d'abord merci de votre gentillesse!
le dernier champ pour moi correspond à ça : echo date 24/06 anniversaire de test > ~/Desktop/Anniversaire.txt (en fait la commande à executer)
Le sixième champ (le reste de la ligne) indique la commande à exécuter.Mais je ne sais pas l'indiquer

Tux12, justement, une fenêtre pop up aurait été plus sympa;)
soit je mélange tout, soit je ne sais pas faire, mais est-ce que ce que j'ajoute est bon? :
00 9 * * * grep `date +\%d\/\%m` /home/francoise/tmp/Anniversaire.txt >/home/francoise/Desktop/Anniversaire.txt || rm /home/francoise/Desktop/Anniversaire.txt

merci encore!
bonne journée
françoise

Hors ligne

#17 24-06-2010 10:33:45

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

juste pour le plaisir et l'acharnement...
J'ai trouvé ceci sur le net :
http://blog.sylvain-lebon.fr/2006/03/08 … u-jours#tb
j'ai essayé de l'appliquer dans vos exemples, mais j'ai du zapper quelquechose ...
si vous pouvez m'éclairez sur ce qui suit?
voici :
francoise@debian:~$ cat ~/.birthdays
Marie=27/06/1985

francoise@debian:~$ cat /home/francoise/scripts/script_ann.sh
#! /bin/sh
if ! test -z "`birthday -W 3`" ; then
birthday -W 3 |sed s/is/a/ |sed s/"years old today"/"ans aujourd'hui"/ |sed s/"years old in"/"ans dans"/ |sed s/"days' time"/jours/| zenity --title Anniversaires\ dans\ les\ 3\ jours --text-info --width=400 --height=80
fi


francoise@debian:~$ crontab -l
# m h  dom mon dow   command


12 00 * * *  DISPLAY=:0.0 /home/francoise/bin/scripts/script_ann.sh

Hors ligne

#18 24-06-2010 16:46:32

Asmodée
Membre
Lieu : /dev/null
Distrib. : Squeeze
Inscription : 16-05-2010

Re : [resolu]anniversaires du jour

Pour ce genre de choses, si ce doit être automatique et utilisé avec GNOME, je te conseillerais plutôt de créer un script de session (que GNOME chargera au début de ta session). Il pourra aller chercher les anniversaires dans un fichier texte (par exemple) et les afficher sous la forme que tu souhaites avec zenity (man zenity pour plus d'infos, c'est très facile à prendre en main).

Cron est très bien cela dit. En fait, tout dépend si tu veux avoir ces anniversaires affichés en début de session systématiquement ou à heure fixe.
__________

Pour ton problème, birthdays est un programme (qui doit donc déjà être installé) qui va chercher le nom des gens entrés dans .birthdays caché dans ton dossier personnel et ne va afficher que le nom des gens dont l'anniversaire aura lieu dans moins de 3 jours (c'est le but de l'argument "-W 3"). Le reste du script sert (seulement !) à franciser la réponse :

|sed s/"years old today"/"ans aujourd'hui"/ par exemple, signifie :
Tu capture ce qu'affiche la commande précédente (ici, birthday -W 3 |sed s/is/a/) et tu substitue "years old today" par "ans aujourd'hui"
Ensuite, l'idée, c'est de lancer ce script tous les jours (dans ton cas, à midi), ce qui est fait grace à crontab.

Hors ligne

#19 24-06-2010 19:37:28

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

Bonsoir Asmodée et merci pour tes précisions
en fait je n'ai réussi à faire fonctionner autrement que par l'explication de Smolki.
pas encore le script détaillé sur ce blog. Je ne sais pas d'où vient mon erreur non plus.Tu dis  " Pour ton problème, birthdays est un programme (qui doit donc déjà être installé) qui va chercher le nom des gens entrés dans .birthdays..." si c'est ça, j'ai compris "créer un fichier ~/.birthdays"? je m'en vais le chercher...

comme j'aurais bien aimé que cette fenêtre de notification se lance à l'ouverture de ma session par exemple.Mais je ne fais qu'aborder, tester un script...
merci encore

Hors ligne

#20 26-06-2010 22:36:35

anonyme
Invité

Re : [resolu]anniversaires du jour

Bonjour,

Pour lancer un script à l'ouverture de session, je n'ai pas trouvé de méthode universelle, seulement des méthodes qui dépendent de l'interface graphique utilisé. On peut ensuite envisager d'utiliser winpopup (mais il faut si j'ai bien compris installer samba - lourd) ou linpopup pour ouvrir une fenêtre, mais je n'ai pas essayé.

Par contre il existe effectivement dans les paquets Debian un paquet birthday, comme le signale Asmodée. Peut-être essayer ça?

@+

#21 27-06-2010 09:36:28

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

Bonjour,
merci pour ta réponse, je ne sais pas si tu as eu l'occasion de tester mais chez moi ça n'a aucun effet :
j'ai installé birthday
puis dans vi anniversaires, j'y ai mis :
#! /bin/sh
if ! test -z "`birthday -W 3`" ; then
birthday -W 3 |sed s/is/a/ |sed s/"years old today"/"ans aujourd'hui"/ |sed s/"years old in"/"ans dans"/ |sed s/"days' time"/jours/| zenity --title Anniversaires\ dans\ les\ 3\ jours --text-info --width=400 --height=80
fi

vi ~/.birthdays
contient marie=28/06/1995

mon crontab :
# m h  dom mon dow   command
25 10 * * * DISPLAY=:0.0 /home/francoise/anniversaires

et pourtant rien n'y fait...
je ne vois pas ce que j'ai oublié
bonne journée ensoleillée à tous;)
françoise

Dernière modification par françoise (27-06-2010 09:37:03)

Hors ligne

#22 27-06-2010 19:59:33

françoise
Membre
Inscription : 15-06-2010

Re : [resolu]anniversaires du jour

Bonsoir,
je viens vous confirmer que ça marche aussi avec ce petit script.
A priori, je n'ai pas réussi de suite, parce que mes modifications n'étaient pas prises en compte aussitôt. Impossible de savoir pourquoi. (le crontab peut-être?)
Donc ça marche bien cette fois mais ne pas hésiter à recommencer;)
merci à vous tous de m'avoir aidé.
Françoise

Hors ligne

Pied de page des forums