Ping aus CSV Datei

  • Ping aus CSV Datei

    Hallo,
    seit einiger Zeit schreibe ich mit Autoit kleine Scripte für Privat und für die Arbeit. Derzeit bin ich dran ein PingTool zu schreiben.

    Vorhanden ist eine Datei mit der PC Zummer und die dazuhörige IP. Alles befindet sich in einer Exceltabelle. Mit der UDF von Excel ist es möglich ja die Datei im hintergrund laufen zulassen. Das ganze Script wird auf einen Server laufen, wo kein Excel drauf ist. Deswegen bin ich auf CSV datei umgesprungen.

    Ich habe schon seit wochen sämtliche Foren durch und finde keine Lösung.

    ping. csv (beispiele)

    1;10.125.212.2
    2;10.125.212.12
    3;10.125.212.3

    Ein Gui habe ich schon erstellt mit einem Feld wo die PC Nummer eingetragen werden kann.

    wie kann ich die CSV datei am besten auslesen. Angedacht wäre es so:

    Im gui die PC nummer eingeben, die IP wird aus der CSV gelesen und die IP wird angeping.Zudem gibt es dann noch Fehlder wo ich die dazugehörigen IP Drucker und den Router der sich dahinter befindet. Dies soll am Besten wieder als Tabelle im vorhandenden GUI angezeigt werden, Msgbox wäre natürlich auch suboptimal.

    ich stehe volles Rohr auf dem Schlauch.

    Das Buch habe ich gelesen, leider ist der Punkt mit dem Gui nicht geschrieben, da peethebee laut seinem Block zurzeit keine zeit hat.


    Hat jemand einen Ansatz für mich? Leider habe ich das Script auf der Arbeit liegen sonst würde ich es per Anhang beifügen.


    Lg Schickedim

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Schickedim () aus folgendem Grund: GELÖST :-)

  • Hallo Schickedim,

    du loest am besten mit

    AutoIt

    1. _FileReadToArray
    deine Datei in ein Array. Dieses Array gehst du dann Zeile für Zeile durch. Mit

    AutoIt

    1. StringSplit
    kannst du die einzeln Zeilen dabei wiederum in ein Array spliten. Mit dem entsprechenden Feld (der IP) führst du danach einen

    AutoIt

    1. Ping
    aus,

    mfg autoBert
  • Guten Morgen.

    autoBert schrieb:

    du loest am besten mit

    AutoIt-QuellcodeCode kopieren

    AutoIt

    1. _FileReadToArray


    deine Datei in ein Array. Dieses Array gehst du dann Zeile für Zeile durch. Mit

    AutoIt-QuellcodeCode kopieren

    AutoIt

    1. StringSplit


    kannst du die einzeln Zeilen dabei wiederum in ein Array spliten. Mit dem entsprechenden Feld (der IP) führst du danach einen

    AutoIt-QuellcodeCode kopieren

    AutoIt

    1. Ping


    aus,

    mfg autoBert
    Erstmal Danke. Ich habe vergessen zuerwähnen, dass es etwa 3300 ips sind. und die gehen nicht von 1 bis x durch z.b. fehlt da 1-10 geht weiter mit 11 dann irrgentwann man mit 222 bis 9999. Ist es trotzdem möglich mit SplitArray nach dem ersten Parameter zu durchsuchen, weil ja nicht PC1 Zeile 1 enspricht.

    UEZ schrieb:

    Hi Oynama Schickidim Schickidim,

    vielleicht kannst du hieraus was gebrauchen: Check Online Status v0.97 Build 2011-11-27 Beta

    Gruß,
    UEZ

    PS: Tarkan lässt Grüßen ;)
    Hallöle.
    ich verstehe in der au3 nur spanisch :D

    Grüße zurück :D youtube.com/watch?v=f9yqn8gVnII




    Als anhang befindet sich die Beispiel Datei. Möglich mir ein beispiel zugeben?
    Dateien
    • Filialen.txt

      (10,93 kB, 75 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Schickedim ()

  • Hallo Schickedim,

    ja natürlich:
    StringSplit

    Teilt einen String, abhängig von den/dem gewählten Trennzeichen (delimiters), in Stringfolgen auf und gibt diese in einem Array zurück
    Quelle: dt. Hilfe


    AutoIt

    1. #include <Array.au3>
    2. dim $aIpLines[4]
    3. $aIpLines[1]="1;10.125.212.2"
    4. $aIpLines[2]="5;10.125.212.12"
    5. $aIpLines[3]="4;10.125.212.3"
    6. $aIpLines[0]=3
    7. _ArrayDisplay($aIpLines,"So sieht dein Array nach Einlesen aus")
    8. for $i= 1 to $aIpLines[0]
    9. $aSplit = StringSplit($aIpLines[$i],";")
    10. _ArrayDisplay($aSplit,"So sueht das Split-Array für das " & $i & " Element von $aIPLines aus")
    11. ConsoleWrite("Computer: " & $aSplit[1] & " hat die IP: " & $aSplit[2] & @CRLF)
    12. Next
    Alles anzeigen


    mfg autoBert
  • Meinst das vielleicht so:

    Spoiler anzeigen

    AutoIt

    1. #include <Array.au3>
    2. #include <File.au3>
    3. Dim $ips
    4. _FileReadToArray("ip.csv", $ips)
    5. $pcnummer = InputBox("Ping", "PC-Nummer eingeben:")
    6. $index = _ArraySearch($ips, $pcnummer & ";", 1, 0, 0, 1)
    7. If @error Then
    8. MsgBox(0, "Ping", "PC ist nicht in der IP-Liste")
    9. Else
    10. $ip = StringSplit($ips[$index], ";", 2)
    11. $ping = Ping($ips[$index])
    12. If @error = 0 Then
    13. MsgBox(0, "Ping", "Der PC hat in " & $ping & " Millisekunden geantwortet.")
    14. Else
    15. MsgBox(0, "Ping", "PC antwortet nicht.")
    16. EndIf
    17. EndIf
    Alles anzeigen
    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Scripte: Runes of Magic Patcher OrganizeUserCall Autoit direkt aus dem Browser
    UDFs: XPathVerwalt Teamspeak 3 Plugin GoogleMap
  • Vielen dank.
    So in etwa meinte ich das! Muss das nur noch bisschen umstellen bis das hinhaut. Derzeit bekomme ich noch ein paar fehler Meldungen. Falls ichs nicht hinbekomme, werde ich mich melden.


    €dit:
    Ich habe soweit jetzt fast alles fertig. Aber etwas funktioniert nicht.
    Spoiler anzeigen

    AutoIt

    1. ; bin mir nie sicher welche au3 ich brauche.
    2. #include <GUIConstants.au3>
    3. #include <ButtonConstants.au3>
    4. #include <Constants.au3>
    5. #include <Misc.au3>
    6. #Include <File.au3>
    7. #include <String.au3>
    8. #include <Array.au3>
    9. dim $ips
    10. if Not _FileReadToArray("ips.csv", $ips) Then
    11. MsgBox(4096, "Fehler", "Fehler beim Einlesen der Datei in das Array!" & @CRLF & "Fehlercode: " & @error)
    12. Exit
    13. EndIf
    14. GUICreate("Filiale Ping", 764, 93, 194, 288)
    15. $flnr = GUICtrlCreateInput("", 112, 48, 97, 21)
    16. GUICtrlSetLimit(-1, 4)
    17. $router = GUICtrlCreateButton("Cisco Router", 0, 0, 89, 25, 0)
    18. GUISetState(@SW_SHOW)
    19. While 1
    20. $nMsg = GUIGetMsg()
    21. Switch $nMsg
    22. Case $GUI_EVENT_CLOSE
    23. Exit
    24. Case $router
    25. _router ()
    26. EndSwitch
    27. WEnd
    28. Func _router ()
    29. $index = _ArraySearch($ips, GUICtrlRead($flnr) & ";", 1, 0, 0, 1)
    30. If @error Then
    31. MsgBox(0, "Ping", "Filiale nicht vorhanden")
    32. Else
    33. $ip = StringSplit($ips[$index], ";", 2)
    34. Ping($ips[$index]&".130", 250)
    35. If @error = 0 Then
    36. MsgBox(0, "Ping","Cisco Router ist Online.") ;"Cisco Router ist Online.")
    37. Else
    38. MsgBox(0, "Ping", "Cisco Router ist Offline.")
    39. EndIf
    40. EndIf
    41. EndFunc
    Alles anzeigen

    ips.cvs
    Filiale; IP
    12;10.199.250
    15;10.199.252
    20;10.199.255


    Der Router ist immer Offline und wenn ich kein Parametter eingebe bzw eine falsche, nicht vorhandende Filial nummer. Die Abfrage Filiale

    Da es sich um einen Kunden hält sind das hier beispiel daten.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Schickedim ()

Webutation