Wenn Ping() auf IP mal nicht klappt...

  • Grüße,

    da bei einem Ping über die Kommandozeile die aktuelle Zeit nicht ausgegeben wird, wollte ich mir da etwas mit AutoIt basteln. Später würde ich die Daten dann vielleicht in einer Datenbank oder einer Textdatei ablegen, aber darüber mache ich mir dann später noch Gedanken.
    Dummerweise bringt mich Ping() etwas durcheinander. Wenn ich das Netzwerkkabel am Rechner abziehe, liefert die Funktion immer noch 1ms statt einem Fehler. Irgendwie blicke ich da nicht durch, wo liegt mein Denkfehler?

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=c:\users\user\documents\my dropbox\dateien\autoit\scripte\dauerpinger\form1.kxf
    $Form1 = GUICreate("Form1", 460, 369, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
    $Label1 = GUICtrlCreateLabel("Vertrag", 16, 64, 38, 17)
    GUICtrlSetOnEvent(-1, "Label1Click")
    $IPAddress1 = _GUICtrlIpAddress_Create($Form1, 272, 64, 130, 21)
    _GUICtrlIpAddress_Set($IPAddress1, "217.68.160.210")
    $Label2 = GUICtrlCreateLabel("IP", 248, 64, 14, 17)
    GUICtrlSetOnEvent(-1, "Label2Click")
    $Input1 = GUICtrlCreateInput("Input1", 64, 64, 129, 21)
    GUICtrlSetOnEvent(-1, "Input1Change")
    $Start = GUICtrlCreateButton("Start", 64, 96, 121, 25)
    GUICtrlSetOnEvent(-1, "StartClick")
    $Button2 = GUICtrlCreateButton("Button2", 272, 96, 137, 25)
    GUICtrlSetOnEvent(-1, "Button2Click")
    $Ausgabefeld = GUICtrlCreateEdit("", 64, 152, 345, 113)
    GUICtrlSetData(-1, "Ausgabefeld")
    #cs
    GUICtrlSetState(-1, $GUI_DISABLE)
    #ce
    GUICtrlSetOnEvent(-1, "AusgabefeldChange")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Global $arbeiten
    Global $ms
    Global $hist
    Global $ip

    [/autoit][autoit][/autoit][autoit]

    While 1
    If $arbeiten == 1 Then
    $ip = _GUICtrlIpAddress_Get($IPAddress1)
    ;$ip = "www.google.de"
    $ms = Ping($ip,2000)
    $err = @error
    if $err <> 0 Then $ms="Feeehler" & $err
    $hist = GUICtrlRead(-1)
    GUICtrlSetData(-1, @YEAR & '.' & @MON & '.' & @MDAY & ' ' & @HOUR & '-' & @MIN & '-' & @SEC & ';' & $ms & @CRLF & $hist)
    Sleep(1000)
    Else
    Sleep(100)
    EndIf

    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func Button2Click()
    $arbeiten=0
    EndFunc
    Func Form1Close()
    GUIDelete()
    Exit
    EndFunc
    Func Form1Maximize()

    [/autoit][autoit][/autoit][autoit]

    EndFunc
    Func Form1Minimize()

    [/autoit][autoit][/autoit][autoit]

    EndFunc
    Func Form1Restore()

    [/autoit][autoit][/autoit][autoit]

    EndFunc
    Func Input1Change()

    [/autoit][autoit][/autoit][autoit]

    EndFunc
    Func Label1Click()

    [/autoit][autoit][/autoit][autoit]

    EndFunc
    Func Label2Click()

    [/autoit][autoit][/autoit][autoit]

    EndFunc
    Func StartClick()
    $arbeiten=1
    #cs
    MsgBox(64, "New GUI", "Start")
    #ce

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    Einmal editiert, zuletzt von wartos (7. Dezember 2010 um 13:11) aus folgendem Grund: Naja, Problem ist zumindest umgangen

  • Ping gibt dir den Fehler zurück:
    Wenn die Funktion scheitert(also 0 zurückgibt), enthält @error weitere Informationen:
    1 = Der Computer ist offline
    2 = Der Computer ist nicht erreichbar
    3 = Falsche Adresse
    4 = Andere Fehler

  • Hi, hab dein Script mal Umgebaut..
    Der Fehler lag meines Wissens nach irgedwie bei dem Pingen der IP Adresse selbst, habe das deswegen mal mit dem Hostnamen versucht, auf jedenfall funzt das...

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <inet.au3>
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $arbeiten
    Global $ms
    Global $hist
    Global $ip

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=c:\users\user\documents\my dropbox\dateien\autoit\scripte\dauerpinger\form1.kxf
    $Form1 = GUICreate("Form1", 460, 369, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
    $Label1 = GUICtrlCreateLabel("Vertrag", 16, 64, 38, 17)
    GUICtrlSetOnEvent(-1, "Label1Click")
    $IPAddress1 = _GUICtrlIpAddress_Create($Form1, 272, 64, 130, 21)
    _GUICtrlIpAddress_Set($IPAddress1, "217.68.160.210")
    $Label2 = GUICtrlCreateLabel("IP", 248, 64, 14, 17)
    GUICtrlSetOnEvent(-1, "Label2Click")
    $Input1 = GUICtrlCreateInput("Input1", 64, 64, 129, 21)
    GUICtrlSetOnEvent(-1, "Input1Change")
    $Start = GUICtrlCreateButton("Start", 64, 96, 121, 25)
    GUICtrlSetOnEvent(-1, "StartClick")
    $Button2 = GUICtrlCreateButton("Button2", 272, 96, 137, 25)
    GUICtrlSetOnEvent(-1, "Button2Click")
    $Ausgabefeld = GUICtrlCreateEdit("", 64, 152, 345, 113)
    GUICtrlSetData(-1, "Ausgabefeld")
    #cs
    GUICtrlSetState(-1, $GUI_DISABLE)
    #ce
    GUICtrlSetOnEvent(-1, "AusgabefeldChange")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    TCPStartup()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Button2Click()
    AdlibUnRegister()
    EndFunc
    Func Form1Close()
    GUIDelete()
    Exit
    EndFunc
    Func Form1Maximize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc
    Func Form1Minimize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc
    Func Form1Restore()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc
    Func Input1Change()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc
    Func Label1Click()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc
    Func Label2Click()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc
    Func StartClick()
    Adlibregister("_readping", 2000)
    #cs
    MsgBox(64, "New GUI", "Start")
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _readping()
    $ip = _GUICtrlIpAddress_Get($IPAddress1)
    $ip = _TCPIpToName($ip)
    if @error Then
    $ms = "Error: "&@error
    Else
    $ms = Ping($ip,250)
    EndIf
    $hist = GUICtrlRead(-1)

    GUICtrlSetData(-1, @YEAR & '.' & @MON & '.' & @MDAY & ' ' & @HOUR & '-' & @MIN & '-' & @SEC & ';' & $ms & @CRLF & $hist)
    EndFunc

    [/autoit]
  • Hui, ich möchte mich erst mal für meine verspätete Antwort entschuldigen.

    BadBunny: Wenn dem auch immer so wäre ;)

    Fresapore:

    Vielen Dank, _TCPIpToName wollte ich eigentlich vermeiden, aber da es offensichtlich nicht anders geht, dann muss es wohl so sein.
    Irgendwie hätten die einen in der Hilfe auch darauf hinweisen können, nunja, was solls.

    Adlibregister war mir bisher unbekannt, scheint aber eine nützliche Sache zu sein.

    Vielen Dank nochmal