Script de rappel de dates d'anniversaire [Resolu] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 21-10-2005 à 22:40:02
c'est typiquement le genre de truc que tu peux faire avec n'importe quel language. Tout depend de tes connaissances.
bash est ton ami. Python aussi
Marsh Posté le 21-10-2005 à 23:04:59
"Une copinedegeek, comme toute femme, est une encyclopédie de dates, elle se rappelle du jour de sa rencontre avec son geek, de toutes les disputes surtout quand cest lautre qui a tort (attention aux vieux dossiers), du premier baiser, de la date danniversaire de son geek, de ses parents, des parents de son geek, de la date de son mariage etc...
Un homme en général connaît... la date du jour de sa naissance et ne voit pas pourquoi il faudrait retenir toutes ces dates...
Mais parlons plus précisément du geek, avec lexpérience, je commence à intégrer la gestion des anniversaires par nos petits amis les geeks."
La suite sur copine de geek
Marsh Posté le 21-10-2005 à 23:10:09
Ben oui je sais bien que n'importe quel script pourrait faire l'affaire. Le souci ensuite c'est de le faire
Ce que je voudrais faire, c'est un truc du style, que je dois convertir en bash :
boucle sur toutes les lignes du fichier
1) Separer dans 3 variables les 3 champs de la ligne ( $date $destinataire $message )
2) Si la date correspond, on envoit le mail :
$dateDuJour=date +%d/%m
if [ $dateDuJour -eq $date ]; then
echo $message | mail -s "Anniversaire !!" $destinataire
fi
fin boucle
Là ou je coince, c'est pour faire la boucle et scinder une ligne du fichier en 3 champs.
Comment on peut faire ca en bash ?
Marsh Posté le 21-10-2005 à 23:25:33
J'ai fait un bout du script pour debugguer la detection de la bonne date et envoyer le mail. Cette partie fonctionne.
Code :
|
Marsh Posté le 21-10-2005 à 23:31:37
man bash
mouais donc, a supposer que le separateur est : (deux points)
mon fichier dates.txt contient ca, et se trouve dans le répertoire courant :
Code :
|
Code :
|
C'est crade, y'a des methodes plus propre pour le faire, mais tu obtiendras ton résultat. Apres, tu fais ce que tu veux des variables
Marsh Posté le 22-10-2005 à 00:00:12
Bon j'ai reussi a faire un truc qui marche :
Code :
|
Par contre le fichier anniversaire.txt ne doit pas avoir de lignes superflues et doit etre de la forme :
21/10;desti@domaine.truc;C'est l'anniversaire de personne !
Pensez vous qu'on peut faire plus simple et plus propre ? Notemment sur la separation des champs peut etre ?
Marsh Posté le 22-10-2005 à 00:04:18
syl94 : ok merci je viens de voir ta reponse. Ok j'ai compris, le principe est un peu le meme que moi mais avec une commande differente.
Par contre je vais utiliser ta methode pour la boucle, je trouve ca plus clair que la mienne
Marsh Posté le 22-10-2005 à 18:36:06
c'est dingue je voulais faire exactement le meme script il y a 2 jours ...
Marsh Posté le 22-10-2005 à 18:41:39
Trop fort
Je met ca dans mon bash.bashrc
Marsh Posté le 22-10-2005 à 18:42:53
le format du fichier text m'a l'air un peu chiant ... Je me demande si je vais pas faire ca en php/mysql avec la page php appellé a traver un wget par le cron ... Si l'un de vous a déjà fait ca m'evitera de la refaire
Marsh Posté le 23-10-2005 à 16:16:23
En meme temps, le fichier texte, une fois qu'il est rempli.....
Marsh Posté le 02-11-2005 à 00:29:29
Citation : |
Sympa ce script ! J'aimerais savoir s'il était possble d'y apporter une petite modification.
J'ai une dizaine de comptes utilisateurs sur mon serveur et plutôt que d'avoir un seul fichier "anniversaire.txt", j'aimerais que le script prenne en compte les fichiers "anniversaire.txt" de tous les utilisateurs du serveur. De manière à ce que chaque utilisateur puisse apporter ses propres modification dans son fichier "anniversaire.txt" situé dans /home/username.
C'est possible ?
Merci d'avance...
Marsh Posté le 02-11-2005 à 09:13:35
oui, c'est faisable, et meme facilement realisable. On pourrait placer une condition en tete du script genre
Code :
|
ensuite, un appel au script dans le .bashrc (ou autre *rc du shell user)
Marsh Posté le 04-11-2005 à 20:52:49
C'est vrai que ton idée hobgob est pas mal.
Mais je pense que plutot que le script soit lancé dans le bashrc de l'utilisateur, il faudrait que le script soit lancé par crond tous les matins, et qu'il scanne tous les repertoires utilisateurs pour voir si l'un d'entre eux possede un fichier anniversaire.txt.
Marsh Posté le 04-11-2005 à 22:50:30
Citation : * date=`echo $ligne | awk -F ';' '{print $1}'` |
beurk
Citation : IFS=; |
et hop la date est dans $1, le destinataire dans $2 et le message dans $3 !
Marsh Posté le 04-11-2005 à 22:52:08
nlc a écrit : C'est vrai que ton idée hobgob est pas mal. |
/etc/bashrc ou un truc dans le genre et ca roule. pas besoin de "scanner".
Marsh Posté le 07-11-2005 à 21:34:02
Si tu met ca dans un bashrc, tu aura un message a chaque fois que tu lances un nouveau shell (xterm...). En plus, bashrc n'est pas sense produire d'output car ca casse scp et rcp. Et enfin ca ne s'appliquera pas aux utilisateurs qui n'utilisent pas bash.
Marsh Posté le 21-10-2005 à 22:27:56
Bonsoir a tous.
Comme je suis tres tete en l'air, j'oublie tout le temps les dates d'anniversaire de mes proches.
J'ai eu une idée qui je pense peut etre tres simple a realiser avec un script, mais je ne sais pas trop comment faire.
Comme j'ai un serveur qui tourne 24/24, il faudrait que le script soit lancé 1 fois par jour, et qu'il lise dans un fichier les dates d'anniversaire configurés ainsi qu'un message associé. (pour le lancer une fois par jour je compte utiliser crontab)
On pourrait par exemple avoir un fichier anniversaires.txt qui contiendrait :
Le script lancé chaque jour devrait donc ouvrir ce fichier, regarder si une date correspond a la date du jour, et si oui envoyer un mail avec le message associé.
On pourrait meme envisager de mettre l'adresse mail dans le fichier :
En fait ensuite on pourrait meme imaginer un truc encore plus generaliste, qui permettrait d'envoyer un mail pour rappeler de faire quelque chose, de facon cyclique (chaque année pour un anniversaire par ex) ou pas (un truc ponctuel), avec une configuration tres souple par une page web ? Une page PHP par exemple qui permettrait de generer le fichier txt contenant les dates, les mails et les messages ?
Enfin pour l'instant j'en suis pas là
Il faut que je fasse juste un petit script qui scanne les lignes et envoit un mail au destinataire avec le message associé si la date correspond a la date du jour. Pour envoyer le mail je vais trouver comment faire, mais pour depioter les lignes et tester la date je vois pas
Si vous avez des idées...
Cyril
Message édité par nlc le 22-10-2005 à 14:00:59