Projet

Général

Profil

Demande #2851

Ajouter une sonde pour vérifier la mise à jour de planet.april.org

Ajouté par Benjamin Drieu il y a plus de 6 ans. Mis à jour il y a environ 6 ans.

Statut:
Fermé
Priorité:
Normale
Assigné à:
Catégorie:
-
Version cible:
Début:
14/12/2017
Echéance:
% réalisé:

0%

Temps estimé:
Difficulté:
1 Très Facile

Description

Soit scrapper la page et analyser la date, soit surveiller par la sonde file age le fichier index.html ainsi que les RSS produits.

Historique

#1

Mis à jour par François Poulain il y a plus de 6 ans

Perso je partirais sur le scrap. Il y a des

<div class="date">Le 18 December 2017 à 11:46:02 </div>

Mais c'est ignoble ...

#2

Mis à jour par François Poulain il y a plus de 6 ans

Un premier jet :

$ cat check_planet.py 
#!/usr/bin/env python3

import re, requests, datetime, locale

max_delay = datetime.timedelta (5, 0)

s = requests.Session()
r = s.get('http://planet.april.org', timeout=5)
r.raise_for_status()
r.encoding= 'utf8'

date= re.search(r'<div class="date">Le (?P<date>.+) à [\d:]{8} </div>', r.text).group('date')
print('Date found: {}'.format(date))

today= datetime.datetime.now ()

try:
    locale.setlocale(locale.LC_ALL, 'C')
    parsed_date= datetime.datetime.strptime (date, '%d %B %Y')
except:
    locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
    parsed_date= datetime.datetime.strptime (date, '%d %B %Y')

print('Date parsed: {}'.format(parsed_date))

if today - parsed_date < max_delay:
    exit (0)
else:
    exit (1)
#3

Mis à jour par Quentin Gibeaux il y a environ 6 ans

  • Assigné à mis à François Poulain
  • Version cible changé de Backlog à Février 2018
#4

Mis à jour par François Poulain il y a environ 6 ans

Avec des modifs mineures (passage à python2 car python3 n'est pas sur la machine), j'ai installé le script suivant sur galanga :

#!/usr/bin/env python
# -*- coding: utf8 -*-

import re, requests, datetime, locale

max_delay = datetime.timedelta (5, 0)

s = requests.Session()
r = s.get('http://planet.april.org', timeout=5)
r.raise_for_status()
r.encoding= 'utf8'

date= re.search(r'<div class="date">Le (?P<date>.+) .* [\d:]{8} </div>', r.text).group('date')
print('Date found: {}'.format(date))

today= datetime.datetime.now ()

try:
    locale.setlocale(locale.LC_ALL, 'C')
    parsed_date= datetime.datetime.strptime (date, '%d %B %Y')
except:
    locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
    parsed_date= datetime.datetime.strptime (date, '%d %B %Y')

print('Date parsed: {}'.format(parsed_date))

if today - parsed_date < max_delay:
    exit (0)
else:
    exit (1)

J'ai du installer python-requests, créer le record dns interne, et ajouter le couple service/commande dans icinga.

#5

Mis à jour par François Poulain il y a environ 6 ans

  • Statut changé de Nouveau à Fermé

Formats disponibles : Atom PDF