59769
Goto Top

alte DNS Einträge via Script löschen

Hallo zusammen

Ich habe den Auftrag bekommen, auf unserem DNS Server nach veralteten Einträgen zu suchen und diese allenfalls zu löschen.
Dazu habe ich einen Script gefunden. Leider kenne ich mich mit Scripten absolut nicht aus..
Verstehe ich das falsch oder müsste ich beim ausführen des Scripts nach Servernamen gefragt werden? Oder muss ich den direkt in den Script eintragen?
Und sehe ich das richtig, dass keine Einträge gelöscht werden, wenn ich den Script so ausführe?

Grüsse Mücke

'-------------------------------------------------------------------------
' DNSAge
'
' Beschreibung
' Lieset das alter der DNS Einträge und löscht diese optional
'
' Voraussetzung
' - Ausführender Benutzer ist lokaler Admin auf dem DNS-server
'
' Version 1.0 FC 18. 08.2008
' Version 1.1
' neue Defaults und Inputbox
' Age in Min
' Version 1.2
' Tippfehler, vergessen 6 ;statt, etc korrigiert
' Version 1.3 FC 16.06.2009
' Vergleich war buggy da MaxAge ein String war Clng
' Offen
' Ausgabe "Deleted" ins Eventlog/Logfile
' Ausgabe Status als CSV-Datei
'-------------------------------------------------------------------------

Option Explicit
'~ On Error Resume Next

dim server, domain, maxage
Server=InputBox("Bitte DNS Servername eingeben oder . als localhost","ServerName",".")
' server = "."
domain=InputBox("Bitte DNS Zone eingeben oder leer für alle Einträge","DNSZone","")
' domain = ""
maxage=InputBox("Maximales Alter in Minuten, zum löschen. 0 = nichts löschen","maximales Alter","0")
' maxage = 43200 ' 30 Tage

dim objWMIService, colItems, objItem, timestamp, age
Set objWMIService = GetObject("winmgmts:\\" & SERVER & "\root\MicrosoftDNS")
if DOMAIN = "" then
Set colItems = objWMIService.ExecQuery("Select * FROM MicrosoftDNS_AType",,48)
else
Set colItems = objWMIService.ExecQuery("Select * FROM MicrosoftDNS_AType where DomainName=""" & DOMAIN & """",,48)
end if

WScript.Echo "datetime;status;name;ip;timestamp;age"
For Each objItem In colItems
If objItem.TimeStamp > 0 Then
Timestamp = DateAdd("h", objItem.TimeStamp, "1/1/1601 00:00:00 AM")
age = datediff("n",timestamp,now)
Else
Timestamp = "0"
age = 0
End If
if (clng(age) < clng(maxage)) or (maxage = 0) then
WScript.Echo now & ";"FOUND;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & Timestamp & ";" & age
else
WScript.Echo now & ";DELETE;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & age
' objitem.delete_
end if
Next
wscript.echo "Finish"

Content-Key: 119839

Url: https://administrator.de/contentid/119839

Printed on: April 16, 2024 at 23:04 o'clock

Member: TsukiSan
TsukiSan Jul 06, 2009 at 14:18:17 (UTC)
Goto Top
Hallo Muecke,

so wie dieser Script aufgebaut ist, mußt du händisch den Servernamen eingeben und "Delete" wird nicht ausgeführt, sondern nur angezeigt.

Gruß
Tsuki
Mitglied: 45877
45877 Jul 06, 2009 at 14:20:29 (UTC)
Goto Top
Hallo,

du kannst dem Windows DNS doch sagen, er soll einträge nach zeit x vergessen...
Mitglied: 59769
59769 Jul 06, 2009 at 14:36:46 (UTC)
Goto Top
Hallo zusammen,

danke erstmals für die schnellen Antworten!

@tsuki: Muss ich den Servernamen auf einem der folgenden zeilen eingeben?
Server=InputBox("Bitte DNS Servername eingeben oder . als localhost","ServerName",".")
' server = "."
Sorry, hab wirklich keine Ahnung von Scripts...

@45877: Ja, das ist auch so gemacht, aber der Chef will wohl mal checken ob das auch wirklich funktioniert oder
so, dass er mir diesen Auftrag gegeben hat face-wink
Member: TsukiSan
TsukiSan Jul 06, 2009 at 14:48:12 (UTC)
Goto Top
Hi Muecke,

Die "Inputbox" öffnet dir ein Eingabedialogfenster.
Bei
"Server = Inputbox("Bitte DNS Servernamen eingeben oder alias localhost","Servername",".") erscheint dir folgendes Eingabefenster:
Fenstertitel: "Servername"
Fensterfrage: "Bitte DNS Servernamen eingeben oder . als localhost"
Eingabefeld: "."
Das heißt, genau an dieser Stelle gibst du den DNS Servernamen ein. Das hast du richtig erkannt!

Du kannst dir mal ein Bild machen davon, indem du dir mal mit dem Texteditor folgenden Script eingibst:
Server=InputBox("Bitte DNS Servername eingeben oder . als localhost","ServerName",".")  
MsgBox Server
dann speichere diese Datei als *.vbs ab und doppelklicke auf diese. Dann bekommst du eine "bildliche Vorstellung von dem ganzen.

Wenn noch Fragen sind, als weiter! VBS ist nicht schwer.

Gruß
Tsuki
Mitglied: 59769
59769 Jul 06, 2009 at 14:58:52 (UTC)
Goto Top
Hallo Tsuki

Dein Beispiel Script funktioniert (mit der Eingabebox).
Bei "meinem" Script bekomme ich aber immer folgende Fehlermeldung:
488aaf7537c05f7c760c762df66a4a79-error
Deshalb dachte ich, ich müsste da was direkt in den Script schreiben...
Member: TsukiSan
TsukiSan Jul 06, 2009 at 15:03:29 (UTC)
Goto Top
Nee, Muecke,
diese Fehlermeldung hat mit dieser Stelle des Progs nichts zu tun.
Kannst du bitte mal den Script komplett eingeben mit
"
dann den Script komplett
"</code"
damit ich mir mal Zeile 52 genauer anschauen kann.
In deinem geposteten steht da "else"
Das paßt nicht

Gruß
Tsuki
Member: TsukiSan
TsukiSan Jul 06, 2009 at 15:11:28 (UTC)
Goto Top
Habs!
In:
WScript.Echo now & ";"FOUND;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & Timestamp & ";" & age

Fehlt ein "&"
Mus sein:
WScript.Echo now & ";" & "FOUND;" & objItem.OwnerName & ";" & objItem.IPAddress & ";" & Timestamp & ";" & age  
Gruß
Mitglied: 59769
59769 Jul 06, 2009 at 15:13:42 (UTC)
Goto Top
Jeisses...aber nein, VBS ist nicht schwer face-wink
Vielen tausend Dank, es funktioniert! Ich hätte noch Jahre gesucht nach dem Fehler...
Member: TsukiSan
TsukiSan Jul 06, 2009 at 15:15:07 (UTC)
Goto Top
keine Ursache!

Manchmal sieht man halt den Wald vor Bäumen nicht!
Ging mir eben genauso.

Viel Spaß
Tsuki face-smile