Salut, c’est Pierre-Yves. Aujourd’hui je vais vous montrer un scénario que j’ai mis en place chez moi afin d’avoir la liste des backups présent sur le serveur Samba. Le but étant de confirmer que le dernier job de backup s’est bien déroulé et que le backup est bien déposé sur le partage Samba défini dans Jeedom. Cela me permet aussi de confirmer que la rotation des backups est opérationnelle par la même occassion.

Le pourquoi

A un moment donné, mon backup SAMBA n’était plus actif. J’avais changer de stockage et oublié cette partie de la configuration Jeedom. Je me suis donc mis en quête d’obtenir une liste tous les jours après un backup Jeedom.
Lancer un scénario à la fin d’un backup n’a rien de compliqué, il existe un déclencheur pour ça. Récupérer la liste des backups distant m’a un peu plus occupé pour le coup. Je souhaitais récupérer la fonctionnalité qui liste les backups jeedom dans la page configuration. Après quelques recherches dans le code de Jeedom, j’ai enfin pu obtenir le résultat souhaité.

Le comment – Onglet Général

Voici l’onglet Général du scénario

Scénario suivi backup

On ajout donc un déclencheur et dans la case Evénement on saisit #end_backup# comme déclencheur. Cela permettra qu’à la fin de chaque backup le scénario soit lancé.
Cet événement permettra ainsi de savoir qu’un problème à eu lieu sur la sauvegarde si nous ne recevons pas le rapport par le moyen de communication choisit (telegram / mail / autre).
Je n’ai pas inventé ce déclencheur, il est présent dans la documentaiton des scénarios pour preuve :

Liste des déclencheurs jeedom

Le comment – Onglet Scénario

Voici le contenu coté scénario.

Onglet scénario du suivi backup

  1. N’ayez pas peur, j’ai commenté les quelques lignes du bloc code PHP. Je ne pense pas qu’il soit nécessaire d’en dire plus que les commentaires qui sont dans la copie d’écran. Vous trouverez le contenu du bloc code un peu plus bas. Attention avec le copié/collé. Les guillemets et autres caractères de ce type sont souvent modifié lors d’un copié collé. Un passage par le bloc note en étape intermédiaire est conseillé. 
  2. Envoi via telegram du message
    1. disable_notify=1 permet de ne pas avoir de notification sur votre téléphone juste pour ce message
    2. Vous pouvez mettre ce que vous voulez comme message, afin d’appeler la variable listeBackup il faut utiliser l’appel suivant :  variable(listeBackup)
  3. Cette commande est informative, elle permet de rajouter dans le log du scénario des informations. C’est plus un tips pour la faire découvrir à ceux qui ne la connaîtrait pas, qu’un réel besoin.

// On ajoute le contenu du fichier samba.repo.php dans notre page actuelle afin de pouvoir utiliser son code
require_once(‘/var/www/html/core/repo/samba.repo.php’);

$backup = new repo_samba; // On créé une instance de la classe repo_samba nommée $backup
$backupsliste = $backup->listeBackup(); // On appelle la fonction listeBackup de l’instance $backup de la classe repo_samba
$listingBackup = » »; // On vide la variable $listingBackup

//Ensuite on parcoure chaque élément du tableau $backupsliste afin de rajouter un retour à la ligne à la fin de chaque élément du tableau.
// Le but étant d’obtenir un affiche plaisant sur telegram
foreach($backupsliste as $backupname){
$listingBackup .= $backupname . « \ »\n\ » »; // \n permet de rajouter un retour à la ligne
}
// On affecte le contenu de $listingBackup à la variable listeBackup que l’on appellera dans le message telegram ci-dessous
$scenario->setData(‘listeBackup’,$listingBackup);

Conclusion

Cet article n’est pas très long, mais je pense qu’il peut être utile et ainsi avoir une surveillance simple de l’état de ses sauvegardes. Les sauvegardes étant à mon sens très très importantes.
La partie bloc code PHP n’est pas forcément la plus digeste, mais parfois il faut en passer par là pour obtenir un scénario « court ».



Partager sur :

Infos de l'auteur

Je m'appelle Pierre-Yves,Je suis dans l'informatique de profession, dans la domotique par hasard pour voir un peu si je pouvais relever le défis de piloter deux trois trucs chez moi. Je crois maintenant que j'ai réussi à me faire attraper par la domotique vu tout ce que j'ai à la maison. Je fais également un peu de VTT, de moto quand le temps le permet.

24 commentaires

  1. Petit script fort sympa, attention toute fois au copier coller du code les simple cote et double cote sont a rectifier sans quoi le script ne fonctionnera pas.

  2. Frederic LAMOUREUX le

    J’adore l’idée, merci beaucoup.

    2 erreurs pour moi à l’execution sur un Jeedom Smart :
    1. syntax error, unexpected ‘var’ (T_VAR)
    2. syntax error, unexpected ‘»’ (T_STRING)

    Pour la 1, je pense que sur SMART il faut enlever le répertoire /var/
    Pour la 2, aucune idée …

  3. TaG - Pierre-Yves le

    Merci pour vos retours.
    Concernant la smart, je ne connais pas du tout ce produit, je n’ai pas les chemins en accès.

    Pour ton point 2, c’est le copié collé qui pose problème.

    Tu as du avoir des >> qui sont arrivés au lieu des  »

    remplace les >> ou << dans le bloc code PHP par des " et ça doit le faire

  4. Frederic LAMOUREUX le

    Merci pour ta réponse Pierre Yves.

    Cette erreur apparait : unexpected ‘\’ (T_NS_SEPARATOR)
    La ligne modifiée est : $listingBackup .= $backupname .  » \ « \n\  » « ; // \n permet de rajouter un retour à la ligne

  5. TaG - Pierre-Yves le

    Je colle le code ici au cas ou :
    require_once(‘/var/www/html/core/repo/samba.repo.php’);

    $backup = new repo_samba;
    $backupsliste = $backup->listeBackup();
    $listingBackup = » »;

    foreach($backupsliste as $backupname){
    $listingBackup .= $backupname . « \ »\n\ » »;
    }
    $scenario->setData(‘listeBackup’,$listingBackup);

    Si ça passe mieux

  6. TaG - Pierre-Yves le

    en commentaire ça remplace les  » par les >> ou >>

    Compare ton code avec le screenshot dans l’article tu va voir ou sont les  » ou non dans le code

  7. attention au copier/coller depuis le web ou word, il faut bien revérifier ou retaper les guillemets car le code PHP distingue tous les caractères

  8. Merci ! Je teste ça ce week-end également. Il vaut toujours mieux être prudent avec les sauvegardes et s’assurer qu’elles sont bien réalisées : ton scénario va le permettre !

    • Très bonne idée le pastebin.
      Il faudrait que j’y pense lors du prochain article avec du bloc code PHP (qui est pour bientôt d’ailleurs)

  9. Pour l’érreur 1 : Réécrire les ‘
    Pour l’érreur 2 : Remplacer les » par  »
    Les guillemets et autres caractères de ce type sont modifié lors d’un copié collé

  10. Super! Merci beaucoup pour ce tuto! Je viens de le mettre en place et ça fonctionne parfaitement (envoi par mail pour ma part mais c’est la seule différence).

  11. Après qq petites compléments pour avoir un retour sur l’exécution du backup .
    Voir les lignes avec –>, et ne pas oublier d’ôter ces « –> », si vous voulez utiliser.
    en tout cas grâce au scénario d’origine, encore merci Pierre-Yves.

    // On ajoute le contenu du fichier samba.repo.php dans notre page actuelle afin de pouvoir utiliser son code
    require_once(‘/var/www/html/core/repo/samba.repo.php’);

    $backup = new repo_samba; // On créé une instance de la classe repo_samba nommée $backup
    $backupsliste = $backup->listeBackup(); // On appelle la fonction listeBackup de l’instance $backup de la classe repo_samba
    $listingBackup =  » « ; // On vide la variable $listingBackup
    –> $jour = date(« Y-m-d »); // récupération de la date du jour
    –> $trouve = « non »; // initialisation de la variable

    //Ensuite on parcoure chaque élément du tableau $backupsliste afin de rajouter un retour à la ligne à la fin de chaque élément du tableau.
    // Le but étant d’obtenir un affiche plaisant sur telegram
    foreach($backupsliste as $backupname){
    –> $pos = strpos($backupname,$jour); // récupération de la position de départ de la date du jour
    $listingBackup .= $backupname. « \n » ; // \n permet de rajouter un retour à la ligne
    –>if ($pos > 0) {
    –> $trouve = « oui »; // modification de la variable si la date a bien été trouvée
    –> }
    –>}
    // On affecte le contenu de $listingBackup à la variable listeBackup que l’on appellera dans le message telegram ci-dessous
    $scenario->setData(‘listeBackup’,$listingBackup);
    –>// On affecte le contenu de $trouve à la variable « trouve » que l’on appellera dans le message
    –>$scenario->setData(‘trouve’,$trouve);

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.