Hallo,
Ich habe ein kleines Überwachungstool für DNS Auflösungen gebastelt, um zu testen ob ein bestimmter DNS Server einige Zeit nicht da ist. Nur nach dem ersten Testlauf über nacht schaute ich heute morgen drauf und das Tool stand still. Ich konnte es auch nicht mehr beenden, nur über den Taskmanager.
Hat jemand eine Idee ?
Code
#include <GUIConstants.au3>
Local $machine = "dedoiposoweb02.xxx.xxx.dom"
Local $dnsServer = "145.xxx.xxx.200"
Local $pause = 60
Local $anz = 0
Local $anzError = 0
Local $timestamp = 0
ToolTip("Anzahl an NSLOOKUP Fehlern: " & $anzError & "/" & $anz & " Zeit bis zum nächsten NSLOOKUP: !! Wird gerade durchgeführt !!" ,0,0,"DNSLOOKUP")
NsLookUp($machine, $dnsServer)
$anz += 1
$timestamp = TimerInit()
While 1
If (TimerDiff($timestamp) / 1000) > 60 Then
ToolTip("Anzahl an NSLOOKUP Fehlern: " & $anzError & "/" & $anz & " Zeit bis zum nächsten NSLOOKUP: !! Wird gerade durchgeführt !!" ,0,0,"DNSLOOKUP")
NsLookUp($machine, $dnsServer)
$anz += 1
$timestamp = TimerInit()
EndIf
ToolTip("Anzahl an NSLOOKUP Fehlern: " & $anzError & "/" & $anz & " Zeit bis zum nächsten NSLOOKUP: " & $pause - (Round(TimerDiff($timestamp) / 1000,0)),0,0,"DNSLOOKUP")
Sleep(1000)
WEnd
Func NsLookUp($machine, $dnsServer)
Local $stream = Run(@ComSpec & " /c nslookup " & $machine & " " & $dnsServer, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $cmdout = ""
While 1
$line = StdoutRead($stream)
If @error Then ExitLoop
$cmdout = $cmdout & $line
Wend
$cmdout = ""
While 1
$line = StderrRead($stream)
If @error Then ExitLoop
$cmdout = $cmdout & $line
Wend
If $cmdout <> "" And StringInStr($cmdout, "wurde von") Then
$anzError += 1
$file = FileOpen(@ScriptDir & "\error.log", 1)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
FileWriteLine($file, @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
FileWriteLine($file, "DNS Server: " & $dnsServer)
FileWriteLine($file, $cmdout & @CRLF & @CRLF)
FileClose($file)
EndIf
EndFunc
Alles anzeigen