Ping mit namen funktioniert nicht

  • Hi,
    ich habe eine kleines Script geschrieben welches eine Excel-Spalte die mit IP Adressen gefüllt ist durchgeht und anpingt.
    Das Ergebnis in ms wird dann in der rechten Spalte neben der IP eingetragen.
    Ich habe das mit Sendkeys gemacht, geht aber bestimmt auch noch besser mit der EXCEL UDF.

    Aber es geht mir sowieso um etwas anderes.
    Manchmal habe ich auch eine Liste mit Hostnamen die ich anpingen will. Das funktioniert aber nicht.
    Dann habe ich versucht Den Eintrag in der EXCEL Tabelle mit StringIsXDigit zu analysieren. Wenn also kein "." im String ist gehe ich davon aus, das es ein HOSTNAME ist. Ich habe versucht dann den Namen mit TCPNameToIP in eine IP umzuwandeln. Aber irgendwie klappt das nicht.
    Komischerweise ist das dem DOS Befehl PING völlig egal, da klappt es sowohl mit dem Namen, als auch mit der IP. Vielleicht liegt es daran, das beim DOS Ping.
    Andererseits sollte das AUTOIT PING doch auch mit HOSTNAMEN klarkommen lt Hilfe:

    Hier meine Script

    [autoit]


    Opt("WinTitleMatchMode", 4)
    WinActivate("Microsoft Excel","")
    ;~ ControlClick("Unbenannt - Editor","","Edit1")

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

    PING_EXCEL ()

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

    Func exit_func()
    exit
    EndFunc

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

    func PING_EXCEL ()

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

    MsgBox(0,"Ping IP Adressen in einer EXCEL-SPALTE","Die Pingzeit wird in der nächsten rechten Spalte eingetragen" & @CR & "Bitte erste IP Adresse anklicken" & @CR & "dann OK klicken" & @CR & "Abbruch mit <ESC>")

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

    Send("^c")

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

    Do
    Send("{RIGHT}")
    $ping=Ping(ClipGet())
    ;~ MsgBox(0,ClipGet(),$ping)
    if $ping > 0 then
    Send($ping & " ms")
    Else
    Send(" dead")
    EndIf
    Send("{LEFT}")
    Send("{DOWN}")
    Send("^c")
    IF ClipGet() = 0 Then ExitLoop
    Until ClipGet() = ""
    EndFunc

    [/autoit]

    Gruß
    Wolke

  • Hi,

    hier mal etwas mit der Excel-UDF. Deine Excel-Datei sollte in der ersten Spalte die Adressen haben.

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>

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

    Opt("WinTitleMatchMode", 4)

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

    Global $sExcel
    Global $iZelle = 1

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

    $sExcel = FileOpenDialog("Dateiauswahl", @MyDocumentsDir, "Excel (*.xls;*.xlsx)", 1)

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

    If @error Then
    MsgBox(4096, "", "Keine Datei ausgewählt!")
    Else

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

    $oExcel = _ExcelBookOpen($sExcel)

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

    If @error = 1 Then
    MsgBox(0, "Fehler!", "Konnte das Excel Object nicht erstellen!")
    Exit
    EndIf
    While 1
    $sZellenWert = _ExcelReadCell($oExcel, $iZelle, 1)

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

    If $sZellenWert <> "" Then
    $iPing = Ping($sZellenWert)
    If $iPing > 0 Then
    _ExcelWriteCell($oExcel, $iPing & " ms", $iZelle, 2)
    Else
    _ExcelWriteCell($oExcel, "dead", $iZelle, 2)
    EndIf

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

    $iZelle = $iZelle + 1
    Else
    ExitLoop
    EndIf
    WEnd

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

    EndIf
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • howdy!

    wenn es sich um eine domain(namen) und nicht um eine ip adresse geht solltest du vorher folgendes versuchen

    [autoit]

    TCPStartup()
    $vIp = TCPNameToIP($vName)
    TCPShutdown()

    [/autoit]

    mfg
    sgtigram