Accueil du site > Scripts > Recevoir les logs irssi par email

Recevoir les logs irssi par email

samedi 21 août 2010, par Fil

Pour irc j’utilise irssi, un client en ligne de commande qui tourne en permanence sur mon serveur. Je m’y connecte de temps à autre avec screen et tout va bien.

Pour indexer les logs — ce qui me permet de retrouver en cas de besoin une conversion —, j’ai écrit ce petit script, irclogs2email.php :

#! /usr/bin/php -q
<?php

$to = $from = 'xxx@rezo.net';

chdir('/home/xxx/irclogs/');
foreach (glob('*/#*.log') as $log) {
 $subject = 'irclog: '.$log.' '.date('Y-m-d');
 $headers = "From: $from\n"
   ."To: $to\n"
   ."List-Id: irclogs\n";
 if (strlen($f = file_get_contents($log)))
   mail($to, $subject, $f, $headers, '-f '.$from);
 # purger le log sans changer son inode
 # (sinon irssi pas content)
 fclose(fopen($log,'w'));
}
?>

Appelé quotidiennement via la crontab :

58 23 * * * php /home/xxx/bin/irclogs2email.php

A noter : le # dans la commande glob() (qui liste les fichiers de log) sert à n’indexer ainsi que les canaux publics, et non les conversations privées.

Quant au List-Id: il me permet de filtrer ces logs quand ils arrivent dans mon mail.

3 Messages de forum

  • Recevoir les logs irssi par email Le 27 août 2010 à 00:26 , par TheMaskedComcomber

    pfff on peut même plus dire de conneries sur irc ... on est fiché !

  • Recevoir les logs irssi par email Le 3 décembre 2010 à 10:35 , par Suske

    Bonjour,

    Merci pour ceci !

    Comme j’utilise un courrielleur graphique qui affiche de l’iso8859-15 si le charset n’est pas précisé (cas le plus fréquent...), j’ai ajouté une entête "charset utf-8" au mail, histoire de récupérer les accents (nan pas ceux de cerdic :-p ).

    Cela donne :

    $headers = "From: $from\n"
      ."To: $to\n"
      ."List-Id: irclogs\n"
      ."Content-Type: Text/Plain; charset='utf-8'";

    Comme ça mon mail s’affiche immédiatement comilfo.

    Mes 0,02 sous.

    • Recevoir les logs irssi par email Le 8 décembre 2010 à 08:08 , par Suske

      Ben finalement, vu que "some devices" gèrent pas l’utf-8, ceci est plus généralement satisfaisant :

      $headers = "From: $from\n"
        ."To: $to\n"
        ."List-Id: irclogs\n"
        ."Content-Type: Text/Plain; charset='iso8859-15'";
      if (strlen($f = file_get_contents($log)))
        mail($to, $subject, utf8_decode($f), $headers, '-f '.$from);

      Une sorte de dictature du plus périmé mais bon, j’imagine qu’ils ont leurs raisons...