Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/12/2010, à 13:55

omnimax

commande pour scanner une page web et voir si elle a été modifiée

bonjour,

tout est plus ou moins dans mon titre car je désirerais créer un petit script pour analyser en permanence les sites sur lesquels je vais souvent (mail et autres) et afficher un message en notification grâce à zenity.

merci pour vos pistes.


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#2 Le 18/12/2010, à 17:22

pode

Re : commande pour scanner une page web et voir si elle a été modifiée

Par exemple avec curl :

$ ls -l /var/www/index.html 
-rw-r--r-- 1 root root 177 2010-12-13 20:01 /var/www/index.html
 curl -I http://localhost/index.html
HTTP/1.1 200 OK
Date: Sat, 18 Dec 2010 15:56:08 GMT
Server: Apache/2.2.16 (Ubuntu)
Last-Modified: Mon, 13 Dec 2010 19:01:47 GMT
[...]
$ sudo touch /var/www/index.html 
$ ll /var/www/index.html 
-rw-r--r-- 1 root root 177 2010-12-18 16:56 /var/www/index.html
$ curl -I http://localhost/index.html
HTTP/1.1 200 OK
Date: Sat, 18 Dec 2010 16:13:43 GMT
Server: Apache/2.2.16 (Ubuntu)
Last-Modified: Sat, 18 Dec 2010 15:56:27 GMT
[...]

A condition que ce soit supporté par le serveur HTTP, la date de dernière modification est dans le header LastModified (W3C - RFC 2616 - Champ LastModified)

Voici un exemple de code utilisant curl + Last-Modified (à améliorer avec une gestion des erreurs) :

$ cat dateHttp.sh 
DERNIERE_MODIFICATION_HTTP=`curl -s -I http://localhost/index.html | awk ' /^Last-Modified: / { print gensub(/^Last-Modified: /,"",1) } '` 
echo "Date de derniere modification : ${DERNIERE_MODIFICATION_HTTP}"
DERNIERE_MODIFICATION_HTTP_EPOCH=`LANG=C date -d "${DERNIERE_MODIFICATION_HTTP}" +%s`
echo "Date de derniere modification au format Epoch : ${DERNIERE_MODIFICATION_HTTP_EPOCH}"
$ ./dateHttp.sh 
Date de derniere modification : Sat, 18 Dec 2010 15:56:27 GMT
Date de derniere modification au format Epoch : 1292687787

Hors ligne

#3 Le 19/12/2010, à 02:17

chopinhauer

Re : commande pour scanner une page web et voir si elle a été modifiée

L'entête Last-Modified est bien prise en compte par tous les serveurs Web. Malheureusement pour les sites dynamiques c'est à l'auteur du script de prendre en charge le calcul de la dernière modification. Du coup dans la plupart des sites la date de dernière modification n'est pas correcte (n'existe pas ou c'est la date de téléchargement de la page). Regarde par exemple les pages de Ubuntu-fr.

D'un autre côté la date de dernière modification a un intérêt uniquement pour certains types de contenu : une page wiki, un tutoriel, etc… Pour des pages qui ont plusieurs éléments distincts c'est largement insuffisant : est-ce que un ticket d'un blog a changé si un commentaire a été ajouté ? Quid d'un site de nouvelles ?

Pour cela d'autre technologies permettent un contrôle plus fin : il s'agit essentiellement des protocoles syndication de contenu RSS et Atom et de leur version push (le serveur transmet sans délai toute modification aux clients) PubSubHubbub.

Évidemment il existe beaucoup de lecteurs pour ce genre de technologie, par exemple Liferea sous Ubuntu ou l'application web Google Reader.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#4 Le 19/12/2010, à 12:18

00_00

Re : commande pour scanner une page web et voir si elle a été modifiée

y a un logiciel ecrit en python qui correspond à ton besoin http://specto.sourceforge.net/

Hors ligne

#5 Le 20/12/2010, à 16:07

omnimax

Re : commande pour scanner une page web et voir si elle a été modifiée

Salut merci à tous pour vos réponses. En effet concernant Curl l'entête last modidied n'est pas prises en compte pour les forums par exemple (le forum ubuntu en fait partie) Sinon pour les autres pas de soucis.

J'ai aussi installé Specto en prenant soin d'installer toutes les dépendances requises mais il m'indique quand même le message d'erreur suivant :

(specto:17652): libglade-WARNING **: could not find glade file '/usr/share/specto/glade/notifier.glade'
Traceback (most recent call last):
  File "/usr/local/bin/specto", line 30, in <module>
    specto = Specto()
  File "/usr/local/lib/python2.6/dist-packages/spectlib/main.py", line 109, in __init__
    self.notifier = Notifier(self)
  File "/usr/local/lib/python2.6/dist-packages/spectlib/notifier.py", line 84, in __init__
    self.wTree = gtk.glade.XML(gladefile, windowname, self.specto.glade_gettext)
RuntimeError: could not create GladeXML object

14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#6 Le 20/12/2010, à 17:02

FRUiT

Re : commande pour scanner une page web et voir si elle a été modifiée

greg2007 a écrit :
(specto:17652): libglade-WARNING **: could not find glade file 

Tu as du oublier d'installer glade (ou pas la bonne version, ou l'installation s'est mal déroulée)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#7 Le 20/12/2010, à 17:08

omnimax

Re : commande pour scanner une page web et voir si elle a été modifiée

non, glade est installé.


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#8 Le 21/12/2010, à 21:29

00_00

Re : commande pour scanner une page web et voir si elle a été modifiée

greg2007 a écrit :

Salut merci à tous pour vos réponses. En effet concernant Curl l'entête last modidied n'est pas prises en compte pour les forums par exemple (le forum ubuntu en fait partie) Sinon pour les autres pas de soucis.

J'ai aussi installé Specto en prenant soin d'installer toutes les dépendances requises mais il m'indique quand même le message d'erreur suivant :

(specto:17652): libglade-WARNING **: could not find glade file '/usr/share/specto/glade/notifier.glade'
Traceback (most recent call last):
  File "/usr/local/bin/specto", line 30, in <module>
    specto = Specto()
  File "/usr/local/lib/python2.6/dist-packages/spectlib/main.py", line 109, in __init__
    self.notifier = Notifier(self)
  File "/usr/local/lib/python2.6/dist-packages/spectlib/notifier.py", line 84, in __init__
    self.wTree = gtk.glade.XML(gladefile, windowname, self.specto.glade_gettext)
RuntimeError: could not create GladeXML object

Tu peux l'installer à partir des depots

Hors ligne