_PING UDF

  • Weiß nicht ob ich hier richtig bin aber ein admin kann es ja immernoch in das passende verschieben. Also ich habe ein UDF geschrieben die ein Ziehl mehrmals anpingt und zusätzliche infos gibt, weil ich gemerkt habe das eibn Ping um den online status festzustellen einfach nix taugt.

    Also einmach die UDF

    [autoit]


    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.0.0
    Author: Matthias_199
    Script Function: UDF für PING

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

    #ce ----------------------------------------------------------------------------
    #include-once
    Global $info, $DNS_zu_IP ,$DNS ,$n ,$IP_DNS
    Dim $IP [9] ,$Ping_Gesamt [9] ,$DNS [9] ,$IP [9] ,$info [9]

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

    ;===============================================================================
    ;
    ; Description: Ausgebauter Ping (_Ping)
    ; Syntax: Keine
    ; Parameter(s): Keine
    ; Requirement(s): Keine
    ; Return Value(s): Der Gesammte Ping ($Ping_Gesamt [$n]), Die DNS falls vorhanden ($DNS [$n]) , die IP ($IP [$n]) ,eine aussage über den status ($info [$n])
    ; Author(s): Matthias_199 <[email='Matthias_resenauer@yahoo.de'][/email]>
    ; Note(s): None
    ;
    ;===============================================================================
    Func _Ping($n = "", $IP_DNS = "" )

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

    $IP[$n] = $IP_DNS
    $Step_1 = StringReplace ( $IP[$n], ".", "")
    $Step_2 = Number ($Step_1)
    If $Step_2 = 0 Then
    TCPStartup()
    $DNS_zu_IP = TCPNameToIP ($IP[$n])
    If $DNS_zu_IP = "" Then
    $IP[$n] = "Nicht verfügbar"
    $DNS[$n] = "Nicht verfügbar"
    Else
    $DNS[$n] = $IP[$n]
    $IP[$n] = $DNS_zu_IP
    EndIf
    TCPShutdown ()
    Else
    $DNS[$n] = "Nicht verfügbar"
    EndIf

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

    $Ping1 = Ping ($IP[$n],999)
    $Error1 = @error
    $Ping2 = Ping ($IP[$n],999)
    $Error2 = @error
    $Ping3 = Ping ($IP[$n],999)
    $Error3 = @error
    $Ping4 = Ping ($IP[$n],999)
    $Error4 = @error
    If $Ping1 > 0 Then
    $Ping1_Teiler = "1"
    Else
    $Ping1_Teiler = "0"
    EndIf
    If $Ping2 > 0 Then
    $Ping2_Teiler = "1"
    Else
    $Ping2_Teiler = "0"
    EndIf
    If $Ping3 > 0 Then
    $Ping3_Teiler = "1"
    Else
    $Ping3_Teiler = "0"
    EndIf
    If $Ping4 > 0 Then
    $Ping4_Teiler = "1"
    Else
    $Ping4_Teiler = "0"
    EndIf
    $Ping_Teiler_Gesamt = ($Ping1_Teiler + $Ping2_Teiler + $Ping3_Teiler + $Ping4_Teiler)
    If $Ping_Teiler_Gesamt > 0 Then
    $Ping_Gesamt[$n] = Round ((($Ping1 + $Ping2 + $Ping3 + $Ping4)/($Ping1_Teiler + $Ping2_Teiler + $Ping3_Teiler + $Ping4_Teiler)))
    Else
    $Ping_Gesamt[$n] = Round(($Ping1 + $Ping2 + $Ping3 + $Ping4))
    EndIf
    If $Error1 = $Error2 And $Error3 And $Error4 Then
    Switch $Error1
    Case $Error1 = 1
    $info[$n] = "Der Computer ist offline"
    Case $Error1 = 2
    $info[$n] = "Der Computer ist nicht erreichbar"
    Case $Error1 = 3
    $info[$n] = "Falsche Adresse"
    Case $Error1 = 4
    $info[$n] = "Andere Fehler"
    EndSwitch
    Else
    $info[$n] = "Mit Computer verbunden"
    EndIf
    EndFunc
    ;===============================================================================
    ;
    ; Description: Infos über _Ping bekommen(_GetPing)
    ; Syntax: Keine
    ; Parameter(s): Keine
    ; Requirement(s): Keine
    ; Return Value(s): Eine MsgBox mit allen Informationen
    ; Author(s): Matthias_199 <[email='Matthias_resenauer@yahoo.de'][/email]>
    ; Note(s): None
    ;
    ;===============================================================================
    Func _GetPing ($n = "")
    MsgBox(0,"Ping Stat","Ping : "&$Ping_Gesamt[$n]&@CRLF&"DNS : "&$DNS[$n]&@CRLF&"IP : "&$IP[$n]&@CRLF&"Meldung : "&$info[$n])
    EndFunc
    ;===============================================================================
    ;
    ; Description: Die Infos wieder löschen(_ResetPing)
    ; Syntax: Keine
    ; Parameter(s): Keine
    ; Requirement(s): Keine
    ; Return Value(s): Löscht alle sachen und setzt mache sachen auf Nicht verfügbar
    ; Author(s): Matthias_199 <[email='Matthias_resenauer@yahoo.de'][/email]>
    ; Note(s): None
    ;
    ;===============================================================================
    Func _ResetPing ($n = "")
    $Ping_Gesamt[$n] = "0"
    $DNS[$n] = "Nicht verfügbar"
    $IP[$n] = "Nicht verfügbar"
    $info[$n] = "Nicht verfügbar"
    EndFunc

    [/autoit]


    Und zum zweiten eine kurze erklärung als beispiel verbaut.


    [autoit]


    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.0.0
    Author: Matthias_199
    Script Function:
    Hier wird euch als Beispiel aufgezeigt wie man das die _Ping UDF nutzt nutzt
    #ce ----------------------------------------------------------------------------
    #include <_Ping.au3> ; zu erst muss man die UDF includen um sie nutzen zu können
    _Ping("0","google.de") ; die erste eingabe in dem fall "0" ist die Ping Zahl den mit der UDF ist es möglichn 9 PC oder server anzupingen und die zu speichern (0-8) darf der wert für die Ping zahl betragen.
    ; Die zweite eingabe hier "google.de" ist die DNS oder IP

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

    _GetPing("0") ; in dem Fall ist "0" wieder die ping nummer aber sie ist nun dazu da die gespeicherten ergebnisse aufzurufen
    _ResetPing("0") ; es wird wieder die ping nummer benötigt um die informationen wieder zu löschen
    _GetPing("0") ; nur als beweiß das er sie gelöscht hat^^

    [/autoit]


    Ich hoffe mal das die Doku auch soweit ok ist ist ja meine erste UDF^^

    Wünsche Kritik verbesserungsvorschläge und lob sind alle erwünscht. ICh hänge die .au3s auch in den post an

    MFG Matthias_199

    edit bernd670: Darstellung von BBCodes aktiviert!

    3 Mal editiert, zuletzt von bernd670 (1. Juni 2009 um 19:38)

  • THX

    Klas ich versuche so weiter zu machen aber im vergleich zu deinem PINGALL ist mein ping etwas mickrig^^

    • Offizieller Beitrag

    Hallo

    PingAll hat sich über einen ZEitraum von ca. nem Jahr entwickelt. Am Anfang war das eigentlich nur ein Ping befehl ;D
    Da kamen denn immer mehr Änderungswünsche, immer mehr zusatzmöglichkeiten. Und da hat mich halt mein Ergeiz gepackt und dann hab ich das halt immer weiter ausgebaut ;)
    Wie gesagt: Bleib am Ball!

    Mfg Spider