Project

General

Profile

Demande #2851

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

Added by Benjamin Drieu almost 3 years ago. Updated over 2 years ago.

Status:
Fermé
Priority:
Normale
Category:
-
Target version:
Start date:
12/14/2017
Due date:
% Done:

0%

Estimated time:
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.

History

#1

Updated by François Poulain almost 3 years ago

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

Updated by François Poulain almost 3 years ago

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

Updated by Quentin Gibeaux over 2 years ago

  • Assignee set to François Poulain
  • Target version changed from Backlog to Février 2018
#4

Updated by François Poulain over 2 years ago

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

Updated by François Poulain over 2 years ago

  • Status changed from Nouveau to Fermé

Also available in: Atom PDF