Forfatter Emne: Dynamisk ip, DDNS med eventlog  (Læst 3468 gange)

0 Medlemmer og 1 Gæst læser dette emne.

Offline COOL_M_F

  • 12 o'clock flasher
  • *
  • Indlæg: 2
Dynamisk ip, DDNS med eventlog
« Dato: 01-09-2008 01:44:56 »
Jeg stod og manglede en metode til at opdatere dns med, og samtidig have en fin lille log over status.
Resultatet blev så dette lille script
Da der nok er andre der kunne have brug for den funktion lægger jeg scriptet ind her selv om det vel nærmest er en udvidelse af denne tråd: http://forum.gratisdns.dk/gratisdns-guideshow-to/t3609/

Da jeg ønskede en seperat logfil til gratisdns kunne jeg ikke lade scriptet bruge eventcreate som ellers følger med windows, istedet benytter jeg et freeware program der har den mulighed.
Programmet laves af Sunset software og det hedder pgevent: http://www.sunsetsw.com

Placer pgevent.exe i windows, windows\system32 eller en hvilken som helst mappe der indgår i %path%
Alternativt kan pgevent.exe også placeres i samme mappe som selve scriptet

Jeg har så lavet en planlagt opgave der er sat til at køre scriptet ved systemstart og hver time
  • opret ny opgave
  • hvis du bruger guiden skal du trykke på gennemse
  • find mappen hvor du har placeret scriptet
  • vælg dit script
  • vælg når min computer starter
  • udfyld brugernavn
  • sæt hak i avanceret egenskaber
  • fanen tidsplan, sæt hak i vis flere tidsplaner
  • klik NY, klik avanceret
  • hak i gentag opgave
  • indstil til f.eks 1 time
  • sæt indtil til 5 min. før starttidspunktet
  • sæt hak i stop opgaven hvis den stadig kører
  • tryk ok og opgaven er klar
På serverne vælger jeg at køre opgaven som "NT AUTHORITY\SYSTEM"
Første gang scriptet kører opretter det selv en en ny logfil der hedder gratisdns
loggen kan ses sådan her: start --> kør --> eventvwr.exe

her er selve scriptet. husk at gemme det som et-navn.VBS
Kode: [Vælg]
'Script der kan opdatere din ip hos gratisdns
'Status skrives i egen logfil i hændelsesloggen
'For at dette virker skal det gratis program PGEvent fra http://sunsetsw.com bruges
'PGEvent placeres enten i samme mappe som dette script eller også i Windows/system32 mappen
'Script lavet af COOL_M_F
Option Explicit
On Error Resume Next

Dim UserName, Password, Domain, Host, WshShell, url, objhttp, strSearchString, objRegEx
Dim colMatches, Pubip, gratisdnssvar, T, I, IpSvar, strMatch, strCommand
'*************************** Her rettes dine oplysninger
UserName = "kontonavn" 'Dit gratisDNS brugernavn
Password = "ddnskode" 'Dit DDNS password (IKKE dit normale password)
Domain = "eksempel.dk" 'Dit domæne (f.eks eksempel.dk)
Host = "eksempel.dk" 'Den A-record du vil ændre (f.eks www.eksempel.dk eller eksempel.dk)
'***************************
Set WshShell = WScript.CreateObject("WScript.Shell")
url="http://myip.dk" 'den side vi henter ip fra
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Call objHTTP.Open("GET", url, FALSE)
objhttp.send
strSearchString = objHTTP.responseText' hent siden
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True   
objRegEx.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
Set colMatches = objRegEx.Execute(strSearchString) 
If colMatches.Count > 0 Then
    For Each strMatch in colMatches   
       Pubip = strMatch.Value 'vi søger efter ip adresser på hjemmesiden
    Next
End If
url="https://ssl.gratisdns.dk/ddns.phtml?u=" & UserName & "&p=" & Password & "&d=" & Domain & "&h=" & Host 'Opdaterings URL
If Err.Number <> -2146697211 Then 'kunne vi hente en ip
Call objHTTP.Open("GET", url, FALSE)
objHTTP.send 'Vi opdaterer ip
gratisdnssvar = objHTTP.responseText
If gratisdnssvar = "OK<br>" Then 'Blev IP ændret
IpSvar = PubIp & "    IP Ændret"  'ja
T = "I" 'Ikon = information
I = "1" 'Id nummer
ElseIf gratisdnssvar = "OK<br>Opdateret i forvejen" Then
IpSvar = PubIp & "    Allerede opdateret"  ' Nej IP er uændret
T = "I"
I = "0"
Else
IpSvar = PubIp & "    " & gratisdnssvar  ' UPS vi fik et andet svar
T = "W" 'Ikon = advarsel
I = "2"
End If
Else
IpSvar = "FEJL, ikke muligt at kontakte hjemmesiden" 'måske manglende internetforbindelse
T = "E" 'Ikon = fejl
I = "99"
End if
strCommand = "pgevent /T=" & T & " /I=" & I & " /S=Gratisdnsupdater /L=Gratisdns /m=" & Chr(34) & ipsvar & Chr(34) 'vi skriver til eventloggen
WshShell.Run strCommand

Jeg har kørt med programmet i en uges tid uden nogen problemer, men lad høre hvis i oplever problemer med det

 MVH
  COOL_M_F