Actions
Demande #2851
ferméAjouter une sonde pour vérifier la mise à jour de planet.april.org
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.
Actions
#1
Mis à jour par François Poulain il y a environ 7 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 ...
Actions
#2
Mis à jour par François Poulain il y a environ 7 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)
Actions
#3
Mis à jour par Quentin Gibeaux il y a presque 7 ans
- Assigné à mis à François Poulain
- Version cible changé de Backlog à Février 2018
Actions
#4
Mis à jour par François Poulain il y a presque 7 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.
Actions