1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

PingVPNMonitor

Discussion in 'T&T - Scripting' started by TimButterfield, Jan 20, 2013.

  1. TimButterfield

    Joined:
    May 20, 2008
    Messages:
    401
    Likes Received:
    2
    PingVPNMonitor.btm

    Code:
    @echo off
    setlocal
    REM Use ping interval to keep internet connection alive and to monitor
    REM VPN connection status by pinging a VPN host name.  The use of the
    REM OSD command requires TCMD and not TCC/LE.  The VPN status is indicated
    REM by OSD text during a disconnect and briefly on reconnect.  Also, a
    REM message dialog is displayed when a disconnect is first detected.
     
    REM The batch file can be started with this command:
    REM start /inv %_cmdspec /c C:\PathToBatch\PingVPNMonitor.btm
     
    set PingHost=hostname
    set PingErr=N
    set PingInterval=30
    set ErrorText=VPN Not Connected
    set OkayText=VPN Connected
    set OSDClear=osd /c 2> nul
    set OSDError=osd /n /top /hcenter /font=36 /rgb=255,0,0 /time=5 %ErrorText
    set OSDOkay=osd /n /top /hcenter /font=36 /rgb=0,255,0 /time=5 %OkayText
    set ShowErrDlg=Y
     
    REM Deleting the log file will stop the background process in case
    REM it needs to be restarted
    set LogFile=%@path[%@full[%_batchname]]%@name[%_batchname].log
    echo %_date %_time %@name[%_batchname] Started > %LogFile
     
    REM wait for VPN connect
    do while %@ping[%PingHost,5] LT 0 (delay %PingInterval)
     
    echo %_date %_time VPN Connected >> %LogFile
     
    REM track VPN disconnect
    REM gosubs are separate as the first may change the interval of the second
    do forever (gosub TestPing & gosub PingIntervalDelay)
    goto end
     
    :TestPing
    REM Check for shutdown request of deleted log file
    if not exist %LogFile exit
    set val=%@ping[%PingHost,1]
    iff %Val LT 0 then
        REM disconnect detected
        echo %_date %_time Ping response: %Val  --  %ErrorText >> %LogFile
        set PingErr=Y
        set PingInterval=5
        %OSDClear
        %OSDError
        REM Only show dialog on first failure
        iff %ShowErrDlg EQ Y then
            set ShowErrDlg=N
            echo %_date %_time Show error dialog >> %LogFile
            msgbox /t60 /s /m /o OK "Error" Ping response: %Val^N^N%ErrorText
            echo %_date %_time Exit error dialog >> %LogFile
        endiff
    elseiff %PingErr EQ Y then
        REM reconnect detected
        echo %_date %_time %OkayText >> %LogFile
        %OSDClear
        %OSDOkay
        set PingErr=N
        set PingInterval=30
        set ShowErrDlg=Y
    endiff
    return
     
    :PingIntervalDelay
    delay %PingInterval
    return
     
    :end
    
    Tim
     

Share This Page