Netzwerk PCs auslesen

  • Hey Leute,
    hab im Forum noch nichts passendes gefunden darum ein neues Thema. Ich möchte gerne per Autoit eine Auflistung der sich im Netzwerkbefindlichen PCs machen, nur leider hab ich noch keine Func gefunden die das so realisiert wie ich das will. Ob einer speziell online ist ja, nur hilftm ir das nichts wenn sich der Name ändern kann, bzw neue PCs hinzukommen. Daher hätte ich gern ein script das im netzwerk nach PCs sucht und diese mit Netzwerknamen und IP auflistet.
    Wenn wer ne Idee hat wie das umzusetzen ist nur her damit.

    Einmal editiert, zuletzt von Black Viper (4. Juni 2010 um 14:33)

  • Ich hatte mir früher auch mal eins geschrieben, allerdings nicht mit Netview, sondern mit anpingen der Adressen. Das dauert zwar etwas, ist aber trotzdem effektiv:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Pinglan.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <iNet.au3>
    #Include <GuiComboBox.au3>
    #include <ComboConstants.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    $n = ""
    TraySetIcon("Shell32.dll", -19)
    While FileExists(@ScriptDir & "/IP"&$n&".txt")
    $n = $n+1
    WEnd
    $ipstart = InputBox("IP Start", "Z.B. 192.168.4.0", "192.168.0.0")
    $ipstopp = InputBox("IP Ende", "Z.B. 192.168.5.91", "192.168.0.255")
    $ipstart = StringSplit($ipstart, ".")
    $ipstopp = StringSplit($ipstopp, ".")
    If $ipstart[0] <> 4 Then
    MsgBox(16, "Fehler", "Keine gültige Start-Ip-Adresse eingegeben")
    EndIf
    If $ipstopp[0] <> 4 Then
    MsgBox(16, "Fehler", "Keine gültige End-Ip-Adresse eingegeben")
    EndIf
    $timeout = InputBox("Timeout", "Zeit um auf Antwort zu warten", "50")
    $a = 0
    FileWrite(@ScriptDir & "/IP"&$n&".txt", "Starte Suche: " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    FileWrite(@ScriptDir & "/IP"&$n&".txt", "Start-Ip = "& $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] &@CRLF)
    FileWrite(@ScriptDir & "/IP"&$n&".txt", "End-Ip = " & $ipstopp[1]&"."&$ipstopp[2]&"."&$ipstopp[3]&"."&$ipstopp[4] & @CRLF)
    Do
    ;~ ToolTip($ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4], 0, 0, $ipstopp[1]&"."&$ipstopp[2]&"."&$ipstopp[3]&"."&$ipstopp[4])
    $ping = Ping($ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4], $timeout)
    If $ping > 0 Then
    $rip = $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4]
    TCPStartup()
    $name = _TCPIpToName($rip)
    If @error = 0 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & $name & @CRLF & "=============================" & @CRLF)
    EndIf
    If @error = 1 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & "inet_addr DllCall fehlgeschlagen" & @CRLF & "=============================" & @CRLF)
    EndIf
    If @error = 2 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & "inet_addr fehlgeschlagen" & @CRLF & "=============================" & @CRLF)
    EndIf
    If @error = 3 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & "gethostbyaddr DllCall fehlgeschlagen" & @CRLF & "=============================" & @CRLF)
    EndIf
    If @error = 4 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & "gethostbyaddr fehlgeschlagen, WSAGetLastError = @Extended" & @CRLF & "=============================" & @CRLF)
    EndIf
    If @error = 5 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & "gethostbyaddr fehlgeschlagen, WSAGetLastError fehlgeschlagen" & @CRLF & "=============================" & @CRLF)
    EndIf
    If @error = 6 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & "strlen/sZStringRead fehlgeschlagen" & @CRLF & "=============================" & @CRLF)
    EndIf
    If @error = 7 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "=============================" & @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Ping: " & $ping & @CRLF & "Hostname: " & "Fehler beim Lesen des Aliases Array" & @CRLF & "=============================" & @CRLF)
    EndIf
    TCPShutdown()
    $a += 1
    TrayTip("IP Lan", $a & " Router/Computer gefunden", 0, 1)
    EndIf
    If $ping = 0 Then
    If @error = 1 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Der Computer ist offline")
    EndIf
    If @error = 2 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Der Computer ist nicht erreichbar")
    EndIf
    If @error = 3 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Falsche Adresse")
    EndIf
    If @error = 4 Then
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & "IP: " & $ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4] & @CRLF & "Andere Fehler")
    EndIf
    EndIf
    $ipstart[4] += 1
    If $ipstart[4] > 255 Then
    $ipstart[3] += 1
    $ipstart[4] = 0
    If $ipstart[3] > 255 Then
    $ipstart[2] += 1
    $ipstart[3] = 0
    If $ipstart[2] > 255 Then
    $ipstart[1] += 1
    $ipstart[2] = 0
    If $ipstart[1] > 255 Then
    MsgBox(16, "Fehler", "Maximale IP-Range überschritten:"&@CRLF&$ipstart[1]&"."&$ipstart[2]&"."&$ipstart[3]&"."&$ipstart[4])
    EndIf
    EndIf
    EndIf
    EndIf
    Until $ipstart[1] = $ipstopp[1] And $ipstart[2] = $ipstopp[2] And $ipstart[3] = $ipstopp[3] And $ipstart[4] = $ipstopp[4]
    FileWrite(@ScriptDir & "/IP"&$n&".txt", @CRLF & @CRLF & "Suche beendet: " & @HOUR & ":" & @MIN & ":" & @SEC)
    MsgBox(0, "Vorgang abgeschlossen", "IP Log erstellt")

    [/autoit]

    PS: Ja ich weiß, einiges hätte man noch intelligenter schreiben können, das Script stammt allerdings aus meiner Anfangszeit^^