Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / IIS

Website Monitor

4.00/5 (3 votes)
21 Apr 2010CPOL 1   552  
This program is a VBS script that checks your website every minute and warns you when it goes offline.

Image 1

Introduction

This program is a VBS script. The script checks regularly that your website is live. When your site goes offline, you will receive a popup that will go away in 15 seconds. If you click OK, the popup button you will open the test page in Internet Explorer. The program will also log the error into the log file (WebsiteMonitor.vbs.log) in the same folder as the script.

Deployment

To deploy this program:

  1. Copy Test.asp to your root folder (C:\Inetpub\wwwroot).
  2. Modify the first line of the WebsiteMonitor.vbs file to point it to the Test.asp on your website.
  3. The script has to be registered with the Windows Scheduler. Go to Control Panel > Scheduled Tasks > Add Scheduled Task. The script will run for about 24 hours, so it is important for it to be scheduled to run every day.

Using the Code

Here is the VBS script:

VBScript
sURL = "http://www.MySite.com/test.asp"

For i = 1 to (24*59) 'minutes in day
    
    sData = GetUrlData(sURL)
    
    If sData <> "Good" Then
        Set oShell = CreateObject("WScript.Shell")
        iButton = oShell.Popup ("Cannot connect to " & sURL, 15)
        if iButton <> -1 Then
            OpenIE sURL
        End If
        
        Log Now() & vbTab & sData
    End If

    WScript.Sleep(1000*60) '1 minute
Next

Function GetUrlData(sUrl)
    on error resume next
    Dim oHttp
    'Set oHttp = CreateObject("Microsoft.XMLHTTP")
    Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")
    oHttp.setTimeouts 0, 0, 0, 0
    
    oHttp.Open "GET", sUrl, False
    oHttp.send
    
    If oHttp.responseText = "" Then
      GetUrlData = "Error Occurred : " & oHttp.Status & " - " & oHttp.statusText
    Else
      GetUrlData = oHttp.responseText
    End If
    
    Set oHttp = Nothing
End Function

Sub Log(sLine)
    Const ForAppending = 8
    Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
    Dim oLogFile: Set oLogFile = fso.OpenTextFile(WScript.ScriptFullName & _
                                 ".log", ForAppending, True)
    oLogFile.WriteLine sLine
    oLogFile.Close
End Sub

Sub OpenIE(sURL)
    On Error Resume Next
    
    Set oShell = CreateObject("Shell.Application")
    Set oIE = oShell.Windows.Item

    oIE.Navigate2 sURL
    
    If Err.number <> 0 Then
        Set oIE = wscript.CreateObject("internetexplorer.application")
        oIE.Visible = True
        oIE.Navigate2 sURL
    End If
    
    Set oIE = Nothing
    Set oShell = Nothing
End Sub

Points of Interest

I also wanted this script to beep or send an email. But I never got around doing this.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)