[TUTO] Envoyer un message récap des Backups sur Telegram

Ola !

Juste un petit truc pour ceux qui veulent jouer un peu :innocent:

Cela donne ça :
image

En gros si la date du dernier backup ne correspond pas à la date du jour je m’envoie une alerte

Donc un scénario avec en déclencheur provoqué : #end_backup#

Un bloc code suivi d’un bloc SI ou je teste le tag(ok) == « nok » pour envoyer à telegram avec
image
Donc si tt est OK, je ne suis pas prévenu…

Le bloc code :

// Ajout de samba.repo.php afin de pouvoir l'utiliser
require_once('/var/www/html/core/repo/samba.repo.php');

$backup = new repo_samba; // Nouvelle instance de la classe repo_samba
$backupliste = $backup->backup_list(); // Création du tableau avec les noms de backup
$listingBackup = "";

// Ajout d'un retour à la ligne pour chaque élément du tableau.
foreach($backupliste as $backupname){
$listingBackup .= $backupname . "\"\n\"";
}

// Liste des icônes
$iconebkp= '&' . '#128190';
$iconeattn= '&' . '#8252';

$tagsretour['#ok#'] = "nok";
$datejour = date("Y-m-d");
//$datejour = "2023-04-16"; // pour tester le nok

$save = $backupliste[0];
$date = substr($save, 21, 10); // On extrait la date du nom de fichier du dernier backup
$heure = substr($save, 32, 5); // On récupère heure 

// Construction du message à envoyer
if ($date == $datejour) {
  $tagsretour['#ok#'] = "ok";
  }
  else {
  $message = $iconebkp . '  ' . $iconeattn. '<b>  Backup  </b>' . $iconeattn . '  ' .$iconebkp . "\n";
  $message .= 'Dernier BKP le : ' . $date . ' à ' . $heure . "\n";
  $message .= 'Vérifie tes logs !' . $iconeattn;
  $tagsretour['#tosend#'] = $message;  
  }  

// Ajout de log si log du scénario activé
$scenario->setLog('+----- Backup -----+');
$scenario->setLog('| Nom Dernier BKP  : ' . $save);
$scenario->setLog('| Date Dernier BKP : ' . $date);
$scenario->setLog('| = Date du Jour   : ' . $tagsretour['#ok#']);
$scenario->setLog('| Heure Dernier BKP: ' . $heure);
$scenario->setLog('| Listing Backups  : ');
$scenario->setLog($listingBackup);
$scenario->setLog('| Message to send  : ' . $message);
$scenario->setLog('+------------------+');

// sauvegarde des tags
$scenario->setTags($tagsretour);

Si votre scénario a les logs sur défaut, vous verrez tout ce que l’on récupère, c’est la section log du code.
Donc vous pouvez adapter pour recevoir si OK et le nom du fichier, ou recevoir tous les backups présents etc…

Voilà c’est sans prétention mais cela peut être utile pour certains.
Moi ça me permet de continuer à me former un peu à php et à l’api Jeedom !

:beers:

3 « J'aime »

Bonjour,

Un grand merci.

Si le backup ne se lance plus pour un problème de cron le scénario ne sera pas non plus lancé non ?
Cas rare assurément, mais ne faudrait pas le mettre en provoqué à 4h45 par exemple ?

1 « J'aime »

Jai donné un exemple de message telegram et une programmation possible après chacun adapte a sa sauce :wink:

Ben un scénario programmé à 4h45 c’est mis dans la cron donc ça ne résoudra pas le souci si il y a un souci de cron comme tu le sous entends. LOL

En effet si c’est un problème général de cron…

Ma réflexion était plus général : est ce qu’un backup qui ne s’est pas fait initie le trigger #end_backup#?

N’y vois pas une critique de ton travail, mais une question que je me suis posée en lisant ton post.

Le backup auto de jeedom chaque nuit, si il se lance (donc pas de souci de cron) fini. Donc le end backup est executé.
Par contre le backup en question peut avoir échoué ou abouti

Ah non je ne prends pas cela pour une critique tkt
En plus je suis debutant en php donc toute remarque est bonne.
Mais bon mon code peut aussi etre modifié facilement pour envoyer un telegram backup ok donc faut pas juste se focaliser sur l’exemple donné lol

Hello,

petite suggestion, ne part pas du début pour le substr() car chaque jeedom peux avoir un nom différent. :wink:

$date = substr($save, -23, -13); // On extrait la date du nom de fichier du dernier backup
$heure = substr($save, -12, -7); // On récupère heure
2 « J'aime »

Super. Merci !

Je n’avais pas du tout pensé a cela.
en faisant -23 et -13 on par donc de la fin de la chaine quelque soit sa longueur et idem avec -13 du coup on tombe toujours sur la bonne info sans être perturbé par le debut de la chaine qui peut varier selon le nom !

J’ai appris un truc ^^ :pray: :beers: :beers:

Bonjour

Merci pour ce scenario.

Par contre, où trouver la correspondance des icones sous format # ?

Merci

Thierry

Là :