Suche simples Tool zur Webüberwachung

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Suche simples Tool zur Webüberwachung

Beitrag von Kukulkan »

Hallo,

Ich suche eine Anwendung (lokale Installation) die folgendes könnens soll:

Eine Web-URL (https://) soll im 5 Minuten Takt aufgerufen werden. Die Rückgabe möchte ich gegen eine Regular Expression auswerten können (den ganzen Rückgabetext der Seite). Wenn die RegExp nicht zutrifft, möchte ich per Mail (SMTP) benachrichtigt werden. Fertig. Ich hab jetzt eine Stunde in Google gesucht und finde nur Webservices (zwei getestet, keiner kann die Rückgabe auswerten) oder überdimensionales (wie zB Nagios). Kennt jemand so ein einfaches Tool? Freeware oder Open Source?

Ich könnte das in PB selbst programmieren, aber dazu hab ich einfach nicht die Zeit :-(

Danke,

Volker
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Re: Suche simples Tool zur Webüberwachung

Beitrag von ZeHa »

Dann programmier es in Python, das dürften keine 5 Zeilen sein
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Suche simples Tool zur Webüberwachung

Beitrag von Kiffi »

@Volker:

auf die Schnelle:

Code: Alles auswählen

EnableExplicit

InitNetwork()

Enumeration ; Windows
  #frmMain
EndEnumeration
Enumeration ; Gadgets
  #frmMain_LOG
EndEnumeration
Enumeration ; Timer
  #timCheckWebPage
EndEnumeration

Global Page2Check.s = "http://www.inspirant.de/" ; Page, die überwacht werden soll
Global CheckTime    = 5 * 60000                  ; alle 5 Minuten prüfen

Procedure AddLog(LogMessage.s)
  
  AddGadgetItem(#frmMain_LOG, -1, FormatDate("%hh:%ii:%ss", Date()) + ": " + LogMessage)
  SetGadgetState(#frmMain_LOG, CountGadgetItems(#frmMain_LOG) - 1)
  
EndProcedure

Procedure CheckWebPage()
  
  Protected MD5.s
  Static InitialMD5.s
  
  AddLog("Ermittle Änderungen an der Webpage...")
  
  DeleteFile(GetTemporaryDirectory() + "deleteme.html")

  ; vorher Cache leeren
  DeleteURLCacheEntry_(Page2Check)
  
  ; Download der Datei
  UrlDownloadToFile_(0, Page2Check, GetTemporaryDirectory() + "deleteme.html", 0, 0)
  
  MD5 = MD5FileFingerprint(GetTemporaryDirectory() + "deleteme.html")
  
  If InitialMD5 = ""

    ; erster Aufruf -> initiale MD5 ermitteln, ansonsten nix tun
    
    InitialMD5 = MD5

    AddLog("Initiale MD5 ermittelt")
    
  Else
    
    ; ermittelte MD5 unterscheidet sich von initialer MD5
    
    If InitialMD5 <> MD5
      
      AddLog("WebPage hat sich geändert!")
      
      AddLog("1. MD5: " + InitialMD5)
      AddLog("2. MD5: " + MD5)
      
      AddLog("Schreibe Mail...")
      
      ; Mail schreiben
      
      If CreateMail(0, "volkers@mailadresse", "Achtung!")
        AddMailRecipient(0, "volkers@mailadresse", #PB_Mail_To)
        SetMailBody(0, "WebPage hat sich verändert!")
        SendMail(0, "smtp.yourfavoritesmtp.com") 
        FreeMail(0)
      EndIf
      
      AddLog("Fertig")

    Else
      
      AddLog("Keine Änderungen ermittelt.")
      
    EndIf      
    
  EndIf
  
EndProcedure

Procedure OpenWindow_frmMain()
  
  Protected WindowFlags
  
  WindowFlags | #PB_Window_SystemMenu
  WindowFlags | #PB_Window_ScreenCentered
  
  OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, 300, 300, "PageChecker", WindowFlags)
  
  ListViewGadget(#frmMain_LOG, 0, 0, 0, 0)
  
EndProcedure

Procedure Main()
   
  Protected WWE
  Protected Quit
  
  OpenWindow_frmMain()

  AddWindowTimer(#frmMain, #timCheckWebPage, CheckTime)
  
  Repeat
    
    WWE = WaitWindowEvent()
    
    Select WWE
        
      Case #PB_Event_CloseWindow
        
        Quit = #True
        
      Case #PB_Event_SizeWindow
        
        ResizeGadget(#frmMain_LOG, #PB_Ignore, #PB_Ignore, WindowWidth(#frmMain), WindowHeight(#frmMain))
        
      Case #PB_Event_Timer 
        
        Select EventTimer()
            
          Case #timCheckWebPage
            
            CheckWebPage()
            
        EndSelect
        
    EndSelect
    
  Until Quit = #True
  
EndProcedure

Main()

ZeHa hat geschrieben:Dann programmier es in Python, das dürften keine 5 Zeilen sein
ich weiss ja nicht, wie Volkers Kenntnisse in Python sind, aber allein das einarbeiten
dürfte länger dauern als ein Deluxe-Programm in PB zu schreiben, oder?
<Sonium> someone speak python here?
<lucky> HHHHHSSSSSHSSS
<lucky> SSSSS
<Sonium> the programming language
;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: Suche simples Tool zur Webüberwachung

Beitrag von Kukulkan »

Hi Kiffi,

Wow, das ist wirklich Nett von Dir. Ja, so geht es allerdings recht praktisch. Ich muss nur noch den RegExp Teil einbauen. Vielen Dank!!!! :allright:

Nein, ich spreche weder Schlangensprache noch die Programmiersprache Python :lol: SSSSHHHHHHHSHSSHHHHHH

Volker
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Re: Suche simples Tool zur Webüberwachung

Beitrag von ZeHa »

Python ist echt hundseinfach ;) und ist voller brauchbarer Standard-Libraries, d.h. das wären nur Funktions-Calls und ein If gewesen ;) kann jedem nur empfehlen sich die Sprache mal anzuschauen.

Code: Alles auswählen

import urllib
import re
import smtplib

regex = 'dein regex-pattern'
html = urllib.openurl('http://www.google.de')
mailserver = smtplib.SMTP('localhost')

if re.match(regex, html):
    mailserver.sendmail('absender@adresse', 'empfaenger@adresse', 'es wurde was gefunden')
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Suche simples Tool zur Webüberwachung

Beitrag von Kiffi »

Hey ZeHa, Du Schummler! :-)

Deine 5 Zeilen Python prüfen die Page ja nur
einmal (und nicht zyklisch, wie von Volker gewünscht).

PB kann man dann natürlich auch auf wenige
Zeilen eindampfen und in einen Scheduled Task
packen.

> Python ist echt hundseinfach ;)
> und ist voller brauchbarer Standard-Libraries

Python wollte ich mir immer schon mal anschauen
(und Ruby und Perl und und und...)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Re: Suche simples Tool zur Webüberwachung

Beitrag von ZeHa »

Jo, wenn man da noch 'nen Thread und ein Sleep einbaut, dann sind das halt ca. 4 Zeilen mehr :mrgreen:
Wir benutzen Python beim Arbeiten und ich kann echt nur sagen, super Sprache. Am besten gefällt mir u.a. daß so Dinge wie Listen und Dictionaries gleich direkt in die Sprache integriert sind, wodurch sich halt echt so einiges anstellen läßt, was in anderen Sprachen oft 5x so umständlich gelöst werden muß.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten