Demande #2851
fermé
Ajouter une sonde pour vérifier la mise à jour de planet.april.org
Ajouté par Benjamin Drieu il y a presque 7 ans.
Mis à jour il y a presque 7 ans.
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.
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 ...
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)
- Assigné à mis à François Poulain
- Version cible changé de Backlog à Février 2018
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.
- Statut changé de Nouveau à Fermé
Formats disponibles : Atom
PDF