11juil2008
SmsAlert : Envoyer des sms gratuitement depuis ses serveurs
EDIT: On m'a fait remarqué que cette solution ne fonctionne pas sous Ubuntu Hardy Heron, je suis en train de plancher sur une solution.Actuellement ça fonctionne parfaitement avec une debian stable.
------------------------
Je me permet de faire passer ce billet sur le planetlibre car je pense qu'il pourra servir à certains d'entre nous et je n'étais pas inscrit à l'époque, l'original date du 15-02-2008.
Il y a quelques jours je me demandais comment être alerté gratuitement par sms depuis mes serveurs en cas de soucis ou panne. Alors après avoir épluché google et parcouru une dizaine de sites gratuits mais payant (cherchez l'erreur) après avoir demandé à mes connaissances et ne trouvant pas de solution j'ai fini par pondre la solution suivante, alors oui ce n'est pas parfait, oui ce n'est pas 100% libres, oui c'est du bidouillage, mais bon ça fait ce que je veux, comme je le veux.
Alors pour cette recette j'ai besoin :
- D'un compte google.
- D'un serveur debian.
- De php5-cli et php5-curl.
- 2 super classes php
GoogleCalendarWrapper et Simple CURL Wrapper de Alexander Skakunov - Un peu de patience.
Premièrement je vais créer un compte sur google calendar.

Une fois le compte créé je vais surGoogle Calendar je clique sur la flèche à côté de mon agenda:

et je choisis notification.
Une fois sur la fenêtre des options de notification je clique sur : "Configurez votre mobile pour recevoir des notifications".

Dans la fenêtre de paramètre je saisis mon numéro de mobile, je clique sur "Envoyer le code de vérification".

Je reçois un texto du genre:
Votre code de vérification de Google Agenda est XXXXXX
Je saisi le code et "Terminer la configuration."
Maintenant dans la fenêtre de notification je choisis d'envoyer par défaut un rappel via SMS.

Voilà tout est bon, passons maintenant à smsalert.
J'ai créé deux fichiers d'envoi de sms (sms.php et sms_plan.php) qui utilisent les deux excellentes classes de Mr Alexander Skakunov.
cd ~
wget http://macsim.labolinux.net/upload/smsalert.tar.gz
tar zxvf smsalert.tar.gz
cd smsalert
Quelques explications:
Dans le dossier il y a deux classes GoogleCalendarWrapper et MyCurl, j'ai légèrement retouché ces deux classes.
J'ai ajouté l'ajout de notification dans les nouveaux évènement et j'ai changé le chemin des logs curl.
Le principal soucis c'est que google calendar ne permet pas de notification inférieure à 5 minutes ce qui est normal pour utilisation classique de google calendar. J'ai donc rusé, sms.php ajoute l'évènement 5 minutes et 30 secondes après l'instant T.
Configuration:
Maintenant j'édite sms.php et sms_plan.php pour modifier la ligne:
avec mon compte google.$gc = new GoogleCalendarWrapper("VOTRE_MAIL", "VOTRE_PASS");
Voila la configuration est terminée.
Il n'y a plus qu'à utiliser.
Utilisation de sms.php
Sms.php permet d'envoyer un sms en ajoutant l'évènement 5 minutes et 30 secondes après l'instant T.
Ce qui réalise un envoi presque immédiat.
Syntaxe:
Exemple:$php sms.php "TITRE" "MESSAGE"
$php sms.php "Serveur Mail" "Reboot"
et dans les 30secondes qui suivent on reçoit le sms.
J'utilise sms.php pour mes scripts avec cron.
Utilisation de sms_plan.php
Sms_plan.php lui ajoute un évènement à une heure précise pour planifier quelque chose.
Syntaxe:
(L'heure doit être de la forme HH:MM).
$php sms_plan.php "TITRE" "MESSAGE" HEURE
Exemple:
$php sms_plan.php "Serveur Mail" "Reboot dans 1h" 16:00.
Voilà le système est près.
Alors, quels sont les avantages de cette méthode, premièrement elle permet d'être informé rapidement d'un incident sur un serveur par sms, deuxièmement l'agenda google gardera une trace de ces évènements et pour finir c'est gratuit ;).
Si vous connaissez un meilleur moyen de réaliser ça je suis preneur.
Si vous voulez ajouter les évènements sur un autre agenda que celui par défaut, l'explication est dans les fichiers sms.php et sms_plan.php.
Commentaires
vendredi, février 15 2008 | 14:56
Super !! Il n'y a plus qu'a croner tout çà !
vendredi, février 15 2008 | 15:09
T'es un fou furieux !!! Si tu as d'autres bonne idées comme ça pitié poste les !!!
Hop le flux dans lifera
vendredi, février 15 2008 | 17:44
J'avais pas encore trouvé de bonne raison pour utiliser Google Calendar... :D
Good job!
vendredi, février 15 2008 | 21:16
Fabuleux !! en plus j'utilise google calendar ^^
Ta technique marche super bien et ton idée est royale.
Bonne continuation à toi et je mets ton blog dans le bookmark
lundi, mars 17 2008 | 16:21
un pas de plus vers la conquete du monde Minus
jeudi, avril 3 2008 | 17:45
Bonjour à tous!
Je viens de tomber sur cette merveilleuse façon d'envoyer des SMS.
J'ai suivi les instructions la lettre.
Cependant j'ai une erreur au lancement de la page PHP. Il ne veut pas m'authentifier sur mon compte google.
"cannot login with 'xxxxxx@gmail.com' email and 'XXX' password
Erreur"
L'un d'entre vous a-t-il eu ce message ? Y a t il une configuration a effectué au niveau du compte google ?
Merci!
jeudi, avril 3 2008 | 20:18
Salut tito,
Je n'ai pas du tout ce problème, es-ce que tu saisis bien la bonne adresse email avec laquelle tu as accés au google calendar ?
mardi, avril 8 2008 | 22:37
Salut,
ca a l'air terrible ton truc, aussi j'ai voulu essayer.
Mais j'ai un petit soucis, quand j'essaye d'envoyer un mail, j'ai un message d'erreur qui dit qu'il ne connais pas la fonction curl_init()
root@pc-ced:~/smsalert$php sms.php "coucou" "ca va bien ?"
Fatal error: Call to undefined function curl_init() in /root/smsalert/MyCurl.php on line 24
root@pc-ced:~/smsalert$ls
GoogleCalendarWrapper.php MyCurl.php sms.php sms_plan.php
root@pc-ced:~/smsalert$grep curl_init *
MyCurl.php: return $this->fSocket = curl_init();
root@pc-ced:~/smsalert$
Voila.
Je vois pas trop quoi faire.
merci
ced
mercredi, avril 9 2008 | 10:43
Salut Ced, J'ai marqué au début de l'article qu'il fallait installé
tu as sens doutes oublié de l'installé.
php5-curl
Dis moi si ça va mieux après.
lundi, avril 14 2008 | 20:28
Salut,
je suis vraiment désolé.... tu as raison, j avais pas lu ca.....
ca avance mais j ai un autre probleme. Je reposterais quand j aurais le temps de regarder un peu plus, parce que si c encore pour poser une question pourrie, c'est pas la peine... lol
Merci encore
lundi, avril 14 2008 | 21:25
@Ced, ça arrive il n'y pas de soucis passe quand tu veux
mardi, avril 22 2008 | 09:48
Salut,
on peut trouver php5-curl pour redhat es4??
Merci
mardi, avril 22 2008 | 16:21
@Heniinfo, oui je pense que tu peux trouver ça sur redhat au pire tu télécharge la source et tu le compiles à la main.
samedi, avril 26 2008 | 10:12
PHP Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /root/smsalert/GoogleCalendarWrapper.php on line 25
mercredi, avril 30 2008 | 15:36
Salut,
j ai pu l'essayer sur rhel, mais reste un soucis le décalage horaire, on peut connaitre l heure de google.com?
Merci
mercredi, avril 30 2008 | 20:58
@heniinfo,
Regarde le contenu de sms_plan.php et sms.php j'explique comment je gruge le probleme de temps entre google et mon pc
vendredi, juillet 11 2008 | 15:00
je teste ça dès ce soir.
Fantastique ton truc. Tu penses que google va faire payer les sms dans 1 mois ?
:D
Polytan
vendredi, juillet 11 2008 | 16:21
L'idée de "détourner les sms gratuits de google agenda" m'a parcouru l'esprit il y a déjà quelque temps (presque depuis que j'utilise google agenda en fait, je reçois déjà un sms par événement de mon LUG dans l'agenda du libre), mais je ne m'y était pas trop intéressé surtout car orange propose d'alerter par sms des nouveaux emails (maintenant y a un quota d'ailleurs), alors comme on peut s'en douter, j'ai pas mal de règle de forward automatique vers cette boite orange un peu spéciale...
Le seul problème avec cette notification, c'est la limitation d'information transmise: un certains nombres de caractères de l'objet, l'expéditeur, etc... Bref il faut bidouiller aussi mais c'est pratique!
vendredi, juillet 11 2008 | 16:29
Polytab
parle pas de malheur 
vendredi, juillet 11 2008 | 17:21
Il est possible de se faire ce genre d'alerte SMS aussi avec le service de micro-blogging Twitter.
Les explications ici: http://blog.loopion.com/web-20/comm...
samedi, juillet 12 2008 | 10:30
Bonjour j'ai systématiquement cette erreur :
~/smsalert# php sms.php "TITRE" "MESSAGE"
Erreur
J'ai pourtant bien configuré les fichiers et mon compte gmail et l'authentification est OK....
samedi, juillet 12 2008 | 13:13
j'ai le même message ...
samedi, juillet 12 2008 | 14:24
Vous pouvez changer les dernieres lignes de sms.php de:
if($gc->add_event($s))
echo "Evenement: '".$s["title"]."' envoie [ Ok ]\n";
else
echo "Erreur\n";
}
en
$gc->add_event($s)
Et dites moi quel est le message d'érreur.
samedi, juillet 12 2008 | 14:30
Aucune erreur en remplaçant comme demandé par $gc->add_event($s);
Mais l'évènement ne s'ajoute pas à l'agenda
samedi, juillet 12 2008 | 14:45
rajoute print_r($gc); avant $gc->add_event($s) et assure toi que les valeurs correspondes à ton compte.
samedi, juillet 12 2008 | 14:53
Oui adresse e-mail et pass correspondent, le lien ( http://www.google.com/calendar/feed... ) m'amène bien sur la page de mon calendrier ...
Voila ce que ça donne ( pass et mail modifié
) :
christophe@PuertaDelSol:~/smsalert$ php sms.php "test" "test"
GoogleCalendarWrapper Object
(
[email] => m*******@gmail.com
[password] => *****
[feed_url] => http://www.google.com/calendar/feed...
[fAuth:private] =>
[isLogged:private] =>
[feed_url_prepared:private] => http://www.google.com/calendar/feed...
[getHeaders] => 1
[getContent] => 1
[followRedirects] => 1
[fCookieFile:private] => /tmp/g_7d9Yjx
[fSocket:private] =>
)
samedi, juillet 12 2008 | 15:16
Je viends de réessayer et en effet ça ne marche plus :/ je vais creser la question ce week-end file moi ton email je te répond quand j'ai trouvé la réponse
samedi, juillet 12 2008 | 15:25
Voila, je t'ai envoyer mon adresse via le formulaire de ton site
Merci
samedi, juillet 12 2008 | 15:41
Sympa comme idée. J'ai fait un plugin WordPress qui reprend l'idée mais avec Twitter. J"ai ajouté un controle anti-spam (Akismet) + un controle de doublon et il est maintenant possible de voir même les messages envoyés ou bloqués par l'anti-spam dans son admin.
Si vous voulez l'essayer : http://www.defaite.fr/2008/06/28/pl...
samedi, juillet 12 2008 | 16:28
J'ai les mêmes résultats que Think-Free... Je t'envoie mon mail sur ton formulaire aussi. Merci
lundi, juillet 14 2008 | 11:01
Super ! Merveilleux ! Pas de mots pour décrire cette idée géniale...

lundi, juillet 14 2008 | 17:23
Merci Fanfan