Aller au contenu
enfin

[TUTO] Recevoir un MAIL et un SMS lorsque votre QNAP est éteint

Messages recommandés

Bonjour à tous,

Suite à une coupure électrique durant leurs dernières vacances, des amis ont perdu l'intégralité de leur congélateur.

Je me suis alors lancé dans la réalisation d'un script pour recevoir automatiquement un mail lorsque mon NAS est éteint, et donc lorsqu'il n'y a plus d’alimentation électrique!

Vous aurez besoin des éléments suivants:

  • 1 QNAP
  • 1 serveur distant sur lequel vous pourrez héberger le script PHP et qui doit permettre d'exécuter des tâches CRON (lancement d'un script de manière périodique)
    Pero, j'utilise PHPNET.org qui propose ces fonctionnalités dans l'offre de base
  • 1 abonnement chez freemobile si vous souhaitez également recevoir des SMS

Principe de fonctionnement:

  • Une tâche CRON, exécute de manière périodique (toutes les heures par exemple) le SCRIPT PHP stocké sur un serveur distant.
  • Si votre QNAP est OFF, vous recevrez un MAIL et un SMS.

Le SCRIPT PHP "TEST_QNAP_ON.php":

<?php
// TEST SERVEUR ON ou OFF
// https://openclassrooms.com/forum/sujet/voir-si-le-serveur-marche-ou-pas


// DÉCLARATION DES VARIABLES

$nom_serveur = "MON QNAP";                                    // Nom du QNAP
$serverhost = "
qnap.no-ip.com";                                // Adresse du QNAP
$port = "
80";                                                    // PORT du QNAP
$url_de_ce_fichier_php = "
http://mon-site.fr/Test_QNAP_ON.php";    // URL vers CE fichier PHP
$mail = '
mail1@mail.com, mail2@mail.com';     // Déclaration de l'adresse ou DES de destination.
$from = '
"Prénom NOM"<mail1@mail.com>';             // Déclaration de l'adresse d' expédition.


// VARIABLES pour SMS Free Mobile
$ENVOYER_SMS =
1;                                               // Activer l'envoi d'un SMS Activé = 1 / Désactiver = 0
$sms_user = '
USER';                                            // USER du compte Free Mobile à utiliser (Activer l'option sur votre compte FreeMobile)
$sms_pass = '
PASS';                                    // Mot de Passe du compte Free Mobile
$sms_url = 'https://smsapi.free-mobile.fr/sendmsg?user='.$sms_user.'&pass='.$sms_pass.'&msg=';

 

// FIN DÉCLARATION DES VARIABLES

 
$check = @fsockopen ($serverhost, $port, $errno, $errstr, 1.0);
if (!$check) {
    $color = "red"; // couleur rouge
    $statut = "OFF"; // serveur OFFLINE
}
else {
    $color = "#00CC00"; // couleur verte
    $statut = "ON"; // serveur ONLINE
}
@fclose($check);

$texte_html = '<h1>'.$nom_serveur.' est <font color="'.$color.'"><b>'.$statut.'</b></font></h1><p><i> ['.date("d/m/Y - H:i:s").']</i></p><p> <a href='.$url_de_ce_fichier_php.'> >>> Relancer le Test</a> </p>';
$texte_sms = $nom_serveur.' est '.$statut.' ['.date("d/m/Y - H:i:s").'] '.$url_de_ce_fichier_php;
echo $texte_html;


?>

 

<?php
// https://openclassrooms.com/courses/e-mail-envoyer-un-e-mail-en-php

// $mail = ''; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
{
    $passage_ligne = "\r\n";
}
else
{
    $passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = $nom_serveur." est ".$statut;
$message_html = '<html><head></head><body>'.$texte_html.'</body></html>';
//==========
 
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = $nom_serveur." est ".$statut;
//=========
 
//=====Création du header de l'e-mail.
$header = "From: ".$from.$passage_ligne;
$header .= "Reply-to: ".$from.$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header .= "X-Priority: 1".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========


if ($statut == "OFF") {
    //=====Envoi de l'e-mail si serveur OFF
    mail($mail,$sujet,$message,$header);
    //=====Envoi de le SMS si l'option est activée
    if ($ENVOYER_SMS == 1) {
        echo file_get_contents($sms_url.$texte_sms);
    }
    //==========
}

?>

Paramétrage et installation du SCRIPT PHP:

  • Modifier les variables du script ci-dessus (en bleu dans le code)
  • Enregistrer le SCRIPT sous le nom "TEST_QNAP_ON.php"
  • Envoyer votre script sur votre serveur distant à l'adresse paramétrée dans le script: http://mon-site.fr/Test_QNAP_ON.php
  • Paramétrer la Tâche CRON (dépend de votre hébergeur de site web)

 

Utilisation:

Lorsque vous exécutez le script http://mon-site.fr/Test_QNAP_ON.php , vous recevrez une alerte si le QNAP est OFF

 

Bonne utilisation !

En espérant que cela servira à plusieurs d'entre vous,

Laurent

 

Partager ce message


Lien à poster
Partager sur d’autres sites

  • Contenu similaire

    • Par fanoudu62
      Bonjour,
      Je suis tout nouveau sur ce forum, donc My Bless si je ne fais pas les choses dans l'ordre.
      Après des recherches infructueuses un peu partout, je viens vous poser ma question.
      J'ai actuellement les notifications mails d'activées sur mon QNAP TS-231P. Si je fais un test d'envoi, tout est ok.
      J'ai choisi d'être alerté pour les évènements de type Avertissements, Erreur et MAJ système :

      Seulement voilà, j'ai déjà eu une MAJ système qui est arrivée et je n'ai jamais reçue la notification par mail, et surtout, j'ai des "Login Failed" events dans les logs des connexion et ces notifications là ne me sont pas envoyées non plus.

      En faisant le test "Envoyer un email de test", cela fonctionne, je reçois bien le mail de test.
      Sauriez-vous me dire pourquoi cela ne fonctionne pas.
      Un grand merci pour votre aide future !
      Cheers
      Stéphane
    • Par takius
      bonsoir,
      je viens d'acheter d'occassion un NAS Qnap TS269 pro
      avant de vraiment le mettre en route ( transféré mes fichiers dedans ), je souhaite le configuré complétement
      et chose bizarre, je n'arrive pas à configuré le mail de notification
       
      j'ai créer une adresse gmail juste pour cela
      la petite fenetre s'ouvre bien ( dans firefox )
      mais j'ai un encart jaune de "requete" qui s'ouvre et ne va pas plus loin
      aussi, comme pour mon autre nas, j'ai essaye de mettre en "personnalisé" mon adresse orange
      mais j'ai l'impression que certaine donnée sont fausses car le mail ne part jamais
       
       
      ma question ( pour la partie personnalisé )
      quel sont les bonnes données si je rentre le mail Gmail et le mail orange ?
      quel est le type de connexion sécurisé ? ( ssl, tls ou aucun )
       
       
      merci
    • Par Christian33
      Bonjour,
      J'ai un TS 451 version 4.2 de QTS.
      Je partage des photos avec mes amis, en générant un lien qui est envoyé par mail. Je n'ai pas de serveur mail mais utilise mon adresse gmail (paramétrée dans le NAS) et tout fonctionne parfaitement.
      Je dois cependant saisir à chaque partage les adresses mail de mes contacts ... 
      D'où ma question, existe t-il un moyen de partager la donnée sans resaisir à chaqu fois les adresses mail ?
      Merci d'avance de vos retours (ou vos méthode de partage), toujours pertinents.
      Christian
    • Par LudovicLT
      bonjour et meilleurs voeux a tout le monde
       
      je souhaiterais avoir un serveur mail imap opérationnel et suivie par les futurs mise a jour de firmware sur mon qnap
       
      donc une appli officiel qnap
       
      dois je déjà faire ma liste pour le pere noel 2016 ou puis je espérer en avoir un avant
       
      merci
       
       
    • Par cboury
      Bonjour,
      je cherche une caméra pour surveille chez moi.
      Qu'elle détecte le mouvement et être relié à un système d'alarme.
      merci
       
       
×