Prüfung einer Datei

  • Gibt es im Netzverwerk die Möglichkeit, den Verursacher einer Dateiaktion anstatt @UserName zu schreiben?

    Ja, mit ausreichenden Rechten und den nötigen Freigaben geht fast alles.

    Der "Verursacher einer Dateiaktion" kann im Nachhinein nicht mit absoluter Sicherheit ermittelt werden - nur der Eigentümer und alle, die sonst noch schreibend darauf zugreifen dürfen. Gibt es neben dem Admin nur den Eigentümer, ist die Sache schon ziemlich klar... anderfalls müsste man die Dateizugriffe in Echtzeit überwachen, um den "Verursacher" sicher zu ermitteln.

    Ich möchte wenn Person X / Programm Y etwas in eine Datei schreibt, dass PC Z eine MSGBOX erhält.

    Nehmen wir das hier mal als konkretes Beispiel... und gehen dabei davon aus, dass du im Besitz alle benötigten Rechte und Freigaben bist.

    # Benötigte Infos usw.

    • Computername und/oder IP-Adresse des PCs von Person X - sagen wir mal, es ist der PC-A
    • Dateiname und kompletter Pfad zu der Datei, die ausgelesen/überwacht werden soll
    • Username von Person X - der Programm Y gestartet hat und die Möglichkeit, Befehle auf dessen PC ausführen zu dürfen

    Auf PC-A wird nun eine Instanz deines Scriptes beim Start des PCs ausgeführt. Wurde ein Dateizufriff erkannt, wird dieser ausgewertet und je nach Fall dann via UDP eine Benachrichtigung an PC-Z gesendet, die dann folgendes beinhaltet:

    • den oder die relevanten Einträge aus der zu überwachenden Datei (enthält Datum, Uhrzeit und Aktion)
    • Name des Users

    Ich werde mich morgen mal dransetzen und etwas nach dem Schema für Dich stricken...

  • Hallo zusammen,

    durch eure Hilfe fallen mir immer mehr Sachen ein welche die Arbeit erleichtern können.

    Ich denke das nachfolgende ist relativ einfach, hoffe ich.

    Ich möchte in der txt alle Einträge auslesen und dann alle Einträge für Hauptgebäude Nebengebäude etc. für den jeweiligen Monat zählen.

    Sofern das möglich ist automatisiert zum 01 jeden Monats an mich senden lassen.

    Danke vorab.

    EDIT:

    Ok das Zählen ansich war doch kein Problem, wie kann ich das einfacher eingrenzen?

    Nachfolgend noch der Code.

    Das ist ja sehr umständlich.

    Code
    $string=FileRead("C:\Test\Test.txt")
    StringReplace($string,"01.08.2016","")
    StringReplace($string,"02.08.2016","")
    StringReplace($string,"Haupt","")
    Msgbox(0,"",@extended & " Einträge.")

    5 Mal editiert, zuletzt von nwmbd (18. September 2016 um 11:04)

    • Offizieller Beitrag

    Das ist ja sehr umständlich.

    Wieso? - Das ist die m. M. nach schnellste Methode überhaupt. Die nativen Stringmethoden sind unschlagbar schnell. Du musst natürlich nach jedem Replace @extended abfragen um die jeweilige Anzahl zu erhalten.

    Überlegenswert wäre vielleicht (kommt auf die Vielzahl der von dir vorzunehmenden Auswertungen an), die Inhalte der Textdatei in ein SQLite-Datenbank zu überführen und dann ganz einfach per SQL-Statement beliebig kombinierte Abfragen durchzuführen. Da die Textinhalte eine feste Form haben liegt hier der Aufwand einmalig in der Skripterstellung zum Übertragen des Textes in eine Datenbank. Ob das für dich sinnvoll ist, kannst nur du entscheiden.

  • Hallo Bugfix,

    habe das nun wie folgt angepasst.

    Da muss ich ja jeden Monat den Code ändern / ich schreib das für das ganze Jahr :)

  • Hallo,

    könntest du mir eine kurze Hilfe geben wo man da genau ansetzt?

    Irgendwoher muss er ja wissen welches Datum ich möchte.

    Besteht die Möglichkeit das ganze in einer Excel Tabelle zu speichern, das ist mit einer Text etwas unübersichtlich.

    Das er zB in die Tabelle Haupt seine Daten von Jan - Dez und bei Neben auch Jan - Dez speichert.

  • Gib mal eine Datei mit Beispieldaten (oder schreib sie hier in einen Spoiler (Das durchgestrichene Auge oben)), dann kann man dir da das passende geben. Bei sowas ist es immer wichtig zu wissen, was wo steht/stehen kann. Dann kann man auch alles passend verarbeiten.

    Man kann auch durch Exceldateien laufen (mit Excel im Hintergrund,...) Das dauert aber länger als Text und ist meiner Meinung nach auch fehleranfälliger... Ich würd das mit dem Text empfehlen. Es ist auch übersichtlicher und einfacher... (Im Code), als wenn du durch unzählige Spalten laufen musst.)

  • die Txt sieht wie folgt aus:

    Spoiler anzeigen

    16.09.2016 07:14:53 Hauptgebäude ZZ123456 Online/Alarm Öffnung Tor 3

    Mich interessiert nur das Datum und die Anlage (Hauptgebäude), der Rest ist komplett egal.

    Das ganze dann wenn möglich in eine Excel Datei schreiben.

    zB:

    Auswertung.xls

    Blatt Hauptgebäude
    Januar Einträge 1
    Februar Einträge 2
    ...

    Blatt Nebengebäude
    Januar Einträge 2
    Februar Einträge 3
    ...

    2 Mal editiert, zuletzt von nwmbd (18. September 2016 um 13:04)

  • Dann dürfte das hier genau das machen, was du haben möchtest:

    Siehe und lerne ;)

    Ist am Ende eine .csv Datei, die kann Excel auch speichern und auslesen. $sSep ist der Spaltentrenner, hier LEERZEICHEN, vermutlich bei dir @Tab. Musst du passend ändern :)
    Und die Pfade eintragen zum lesen und speichern.

    MfG Kanashius

  • Wow, also wenn ich das durchlaufen lasse sieht das Ergebnis richtig gut aus.

    Ich glaube das ich mich vielleicht falsch ausgedrückt habe, ich füge mal eine txt an.

    Es wird jede Auslösung in einer Zeile gespeichert, selbst wenn ein Eintrag identisch ist muss er berechnet werden, es soll quasi ab 01.08.2016 00:00:01 - 31.08.2016 23:59:59 alles berechnet werden.

    Theoretisch müsste ich ja "nur" alle Einträge der Txt in dein $sFileData bekommen, dann sollte das ja eigentlich gehen.

    EDIT:

    Ich sollte erst lesen dann schreiben, du hast die Antwort ja schon geschrieben, ist das Peinlich :(

    EDIT2:

    Selbst mit deiner Erklärung ist das echt schwer zu verstehen, da fehlen die absoluten Basics.

    EDIT3:

    Je öfter man es liest desto mehr macht es langsam Sinn, alles verstehe ich nicht so recht, dass wäre aber auch langweilig :)
    Ich finde zum lernen immer Videos interessant, hier kommt es natürlich auf den an der es erklärt, aber meist bleibt dann mehr hängen als wenn man sich etwas 10 mal durchliesst.
    Eine Video Rubrik wäre echt genial, wo Anfängern einfache Projekte erklärt werden, bei yt findet man Tonnen von Videos, diese finde ich persönlich aber nicht sehr anschaulich und man findet sehr selten welche die so gemacht sind das man etwas lernt, gibt natürlich auch hier Ausnahmen, aber bei den Tonnen sind die schwer zu finden.
    Diese Anfage zB. Wie mache ich was, warum mache ich das, was genau bedeutet das, warum macht man das nicht so, dass kann nur so gehen, diese Abfrage/Array ... muss immer so aussehen, da brauch man eine Variable, weil sonst ... usw.
    Des weiteren könntet Ihr etwas durch Werbung verdienen, ich habe hier jegliche Blocker deaktiviert.
    Ich habe noch nicht eine Werbung gefunden, (kann auch sein das ich Blind bin) dass verwundert mich etwas.

    5 Mal editiert, zuletzt von nwmbd (18. September 2016 um 18:28)

  • Dann dürfte das hier genau das machen, was du haben möchtest:

    Siehe und lerne ;)

    Ist am Ende eine .csv Datei, die kann Excel auch speichern und auslesen. $sSep ist der Spaltentrenner, hier LEERZEICHEN, vermutlich bei dir @Tab. Musst du passend ändern :)
    Und die Pfade eintragen zum lesen und speichern.

    MfG Kanashius

    Hallo Kanashius,

    ich habe mich vertan, es sind immer Tabs zwischen den Einträgen :(

    Wie kann ich das anpassen?