Register for your free account! | Forgot your password?


Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 16:11

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



BATCH - Logfile auf änderung prüfen & eine ID auslesen?

Discussion on BATCH - Logfile auf änderung prüfen & eine ID auslesen? within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2009
Posts: 540
Received Thanks: 23
BATCH - Logfile auf änderung prüfen & eine ID auslesen?

Hallo,

Ich benötige eine Abfrage die überprüft ob die Datei workshop_log.txt sich verändert hat.
Falls das Logfile sich verändert hat, befinden sich im unteren Teil der Datei ein paar Einträge,
die für mich interessant sind. Die reihenfolge ist hierbei zu beachten.

[AppID 346110] Detected workshop change : changed cached item XXXXXXXXX
[AppID 346110] Finished Workshop download job : No Error

(Die X stehen für eine Mod-ID)


Falls diese Einträge gefunden wurden sollen bestimmte Ordner (ID) & Unterordner gelöscht
werden, damit eine andere Batch die ich bereits erstellt habe, die neuen Items convertieren
kann. Gleichzeitig muss diese ID für weitere Abfragen in einem Textdokument gesichert werden.

Ich habe bereits ein System in der Richtung laufen, man könnte es wohl die Beta nennen.
Allerdings ist mein altes System anfällig für störungen, dazu auch noch langsam und nicht
vollautomatisiert. Das neue System soll alle 5 Minuten checken ob ein Update für eine
Modifikation rein kam. Danach die alten konvertierten Ordner löschen. Eine neue Konvertierung
starten, das ganze verpacken und danach einem zweiten Server (Linux) das "GO" zum Download
dieser gepackten Datei geben. Dort wird sie dann entpackt und zu ihrem Anwendungsort gebracht.

Soweit habe ich alles zur Hand. Auch unter dem Linux system wurde bereits alles vorbereitet.
Nun bin ich in Windows nicht so fit und weiß deshalb nicht was ich equivalent zu tail & grep
verwenden kann.
Keleg is offline  
Old 07/08/2016, 16:56   #2
seit 12 Jahren hier


 
elite*gold: 0
The Black Market: 169/0/0
Join Date: Sep 2008
Posts: 9,465
Received Thanks: 3,086
Sowas wäre wohl als Tool einfacher umzusetzen als als Batch-Datei.
Bzw brauchst du deine implementierung unbedingt als Batch-Datei?
Menan is offline  
Old 07/08/2016, 18:24   #3
 
elite*gold: 0
Join Date: Nov 2009
Posts: 540
Received Thanks: 23
Ich brauche für mein vorhaben nicht umbedingt Batch.
Da ich mich aber meist eher mit Administrativen problemen
herrum schlage, kann ich leider nur Shell/Bash & Batch.

Sicherlich hätte ich in anderen Sprachen auch schon längst
eine viel einfachere und bessere lösung als über tausend
Scripts und Logfiles. Aber mir fehlt das know-how. Deshalb
schlage ich mich mit workarounds und bashes & batches
durch. Das einzige was ich wirklich brauche ist die ID der
Modifikation die gerade geändert wurde, damit ich diese
einfach wieder per Cronjob aus einem Textfile auslesen kann.

Mit welcher programmierung könnte ich das denn nun noch
umsetzen ohne erst dafür Monate oder gar Jahre die Sprache
zu lernen? Ich habe bis jetzt immer alle meine Scripts unter
Linux als Bash und unter Windows als Batch geschrieben.
Ich kenne also gar nichts anderes. (Scripts schreiben)

/edit

Um das Vorhaben noch genauer zu erläutern. Es geht hier um
automatische Modupdates von ARK Servern die auf Linux laufen.
Leider gibt es keinen direkten Moddownload vom Spiel. Ich hätte
zwar die möglichkeit die Modifikationen per SteamCMD direkt auf
meinen Linux-Server zu ziehen. Allerdings müssen diese erst mit
Ionic.Zip konvertiert werden, so dass das Spiel die Modifikationen
überhaupt erst nutzen kann. Dazu kommt noch eine .mod
Datei die erstellt werden muss. Allerdings habe ich unter Linux keine
passenden hilfen und Anleitungen zur Ionic.Zip gefunden.

Ich habe dafür fertig Server scripts gefunden. Diese scheinen soetwas
per Perl zu realisieren. Allerdings möchte ich keine fertigsysteme nutzen.
Raus ziehen ging leider auch nicht so leicht, da es zu viele abhängigkeiten
gibt.

Deshalb habe ich nun den Windows VServer auf dem ich die Mods
downloade, konvertiere, verpacke und sie dann zum Linux Server schicke.
Keleg is offline  
Old 07/08/2016, 20:49   #4
 
elite*gold: 15
Join Date: Jul 2010
Posts: 3,923
Received Thanks: 1,158
also du hast eine datei.
dort ändert sich was?
am einfachsten für anfänger kannst du sowas per java realisieren.
ich würde es dann so machen, dass du die datei bei programmstart ausliest, den inhalt speichern(wenn das programm weiter läuft einfach in einem string speichern). alle X sekunden die datei erneut öffnen bzw. das LastModifiedDate überprüfen, wenn es anders ist als beim ersten öffnen(du kannst auch nur das speichern, aber ka wie du dann die änderungen finden willst), dann öffnest du die datei und liest wieder alles aus.

nun weiß ich nicht was sich in der datei ändert, daher ist es auch schwer zu sagen wie du an genau diese änderung kommst, falls du nur etwas hinzufügst, kannst du einfach alles alte herauslöschen aus dem neuen string und im neuen string steht nur noch die änderung drinnen.

das ganze könnte man als anfänger innerhalb von 2-3wochen realisieren mit einer rudimentären grafikoberfläche die wirklich nur das nötigste tut. je nach vorwissen und mühe deinerseits könntest du es auch schneller fertig haben.
.Scy is offline  
Old 07/08/2016, 21:33   #5
 
elite*gold: 7
Join Date: Dec 2013
Posts: 446
Received Thanks: 186
Quote:
Originally Posted by .Scy View Post
also du hast eine datei.
am einfachsten für anfänger kannst du sowas per java realisieren.
ich würde es dann so machen, dass du die datei bei programmstart ausliest, den inhalt speichern(wenn das programm weiter läuft einfach in einem string speichern).
Bitte nicht!
Das geht doch viel einfacher mit wenigen Zeilen PowerShell

Code:
Function Register-Watcher {
    param ($folder)

    $filter = "*.*"

    $watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{ 
        IncludeSubdirectories = $false
        EnableRaisingEvents = $true
    }

    $changeAction = [scriptblock]::Create('
        # Schreib hier den Code den er ausführen soll wenn sich was ändert
        # Das hier ist ein beispiel um an den namen der geänderten Datei zu kommen
        $path = $Event.SourceEventArgs.FullPath
        $name = $Event.SourceEventArgs.Name
        $changeType = $Event.SourceEventArgs.ChangeType
        $timeStamp = $Event.TimeGenerated
        Write-Host "The file $name was $changeType at $timeStamp"
    ')

    Register-ObjectEvent $Watcher "Changed" -Action $changeAction
}

Register-Watcher "c:\temp" #Pfad anpassen
0xFADED is offline  
Old 07/08/2016, 22:15   #6




 
elite*gold: 0
The Black Market: 259/0/0
Join Date: Apr 2010
Posts: 10,294
Received Thanks: 3,604
@ hat ihm doch lediglich eine mögliche Lösung vorgeschlagen und einen Teil des Codes implementiert welcher Keleg offenbar schwer gefallen ist. Ich glaube nicht wirklich, dass er dir damit "auf den Sack gehen" wollte, vielleicht solltest du mal an deiner Ausdrucksweise arbeiten @.

@ du solltest deine Frage eventuell spezifizieren, solltest du eine Komplettlösung suchen schlage ich vor dich im Coders Trading umzuschauen oder bei der Dev-Suche im Sticky.
Shawak is offline  
Old 07/08/2016, 22:53   #7
 
elite*gold: 0
Join Date: Nov 2009
Posts: 540
Received Thanks: 23
Danke für eure Antworten
Eigentlich dachte ich, ich könnte das alles in Batch realisieren also dachte ich an ein paar Befehle oder Zeilen die mich weiter bringen. Unter Linux würde ich tail & grep nutzen. Was mache ich im Batch?

PowerShell - Ist dann wieder was ganz anderes oder?
Keleg is offline  
Old 07/08/2016, 23:22   #8
 
elite*gold: 22
Join Date: May 2011
Posts: 516
Received Thanks: 178
Quote:
Unter Linux würde ich tail & grep nutzen. Was mache ich im Batch?
das Equivalent zu grep würde bei Windows Findstr sein (Findstr)
Zu tail gibt es meines Wissens kein Windows-Equivalent, wenn es dass ist, worauf du hinaus wolltest.

Evtl. solltes du einmal einen Blick auf GNU utilities für Windows werfen.


Zu PowerShell:
Quote:
Die Windows PowerShell (powershell.exe), zeitweise auch bekannt unter den Codenamen Monad und Microsoft Command Shell (MSH), ist ein Kommandozeileninterpreter von Microsoft. Es ist eine Alternative zum Windows-Kommandozeilenprogramm cmd.exe und zum Windows Script Host.
Denke PowerShell wäre ebenfalls eine gute Lösung für dein Problem. (siehe Post von )
EngelEatos is offline  
Old 07/08/2016, 23:59   #9
 
elite*gold: 7
Join Date: Dec 2013
Posts: 446
Received Thanks: 186
Quote:
Originally Posted by Keleg View Post
PowerShell - Ist dann wieder was ganz anderes oder?
PowerShell ist sozusagen eine "erweiterte Version" von Batch und auf jedem aktuellen Windows vorinstalliert.
PS ist deutlich mächtiger als Batch und hat eine modernere Syntax.
Ich dachte mir ich schlag das vor weil du ja weiter oben meintest, dass Batch nicht zwingend nötig ist.

Quote:
Originally Posted by Keleg View Post
Eigentlich dachte ich, ich könnte das alles in Batch realisieren also dachte ich an ein paar Befehle oder Zeilen die mich weiter bringen
Theoretisch ist es möglich aber nicht so schön
Es gibt ein Beispiel bei
Wenn dir Batch besser gefällt wäre das vllt. was für dich.

Quote:
Originally Posted by Keleg View Post
Unter Linux würde ich tail & grep nutzen
Falls du das Skript auf Linux porten willst kann ich dir empfehlen.

Code:
#!/usr/bin/env bash
while inotifywait -e modify; do
   # irgendwas
done
LG
0xFADED is offline  
Old 07/09/2016, 01:09   #10
 
elite*gold: 0
Join Date: Nov 2009
Posts: 540
Received Thanks: 23
Hat jemmand eine Idee was es mich kosten würde wenn mir jemand ein Mod konvert script für Linux schreibt?
Es benötigt dazu Ionic.Zip und die .mod Dateien müssen aus der Modifikation herraus konvertiert werden. Dazu wäre es nice, wenn es immer automatisch überprüfen würde ob ein Modupdate verfügbar ist. Natürlich soll auch immer nur nach einem Update etwas geschehen und das möglichst schnell.

Sowas gibt es hier:


Es müsste wohl in liegen.
Keleg is offline  
Old 07/10/2016, 09:56   #11
 
elite*gold: 7
Join Date: Dec 2013
Posts: 446
Received Thanks: 186
Quote:
Originally Posted by Keleg View Post
Es benötigt dazu Ionic.Zip und die .mod Dateien müssen aus der Modifikation herraus konvertiert werden.
Dazu wäre es nice, wenn es immer automatisch überprüfen würde ob ein Modupdate verfügbar ist.
Natürlich soll auch immer nur nach einem Update etwas geschehen und das möglichst schnell.
Ich würde dir gerne helfen aber ich verstehe die Aufgabe nicht so ganz...
Soll man auf Änderungen an der "Ionic.zip" warten und die dann entpacken oder wie?
0xFADED is offline  
Old 07/10/2016, 11:21   #12
 
elite*gold: 0
Join Date: Nov 2009
Posts: 540
Received Thanks: 23
Also der Ursprung des ganzen:
Ich brauche ein Script, dass mir per Modifikationen für das Spiel (AppID: 346110) herrunter läd. Bis hier hin kann ich das selber erstellen.
Normalerweise würde man das Spiel ARK starten und es die Modifikationen konvertieren lassen. Denn sie werden nicht von Steam oder SteamCMD konvertiert. Man hat dann eine Linux & eine Windows version zur auswahl, außerdem muss eine .mod Datei rekonstruiert werden. (Die rekonstruktion des Linux ordners führt wohl oft zu Problemen, also immer Windows - auch für einen Linux Server.)
Da es sich hier bei aber um einen Dedicated Server, dessen SSD begrenzt ist handelt und der dazu auch noch auf Linux läuft, kommt es nicht in Frage dort Wine und das Spiel laufen zu lassen. (Die Mods für den Server AppID: 376030 kommen also vom Spiel und müssen dann normalerweise hoch geladen werden.) Zur Zeit passiert das über meinen Windows VServer, den ich aber eigentlich anderweitig benötige.

Nun gibt es für WINDOWS einige Konverter Tools, eines davon nutze ich gerade auf meinem VServer. Es nutzt Ionic.Zip(dll).
Aber soweit ich weiß ist das in dem -> <- für Linux, dass ich gelinkt habe nicht aufgeführt. Ich glaube dort läuft alles per Bash & Perl. <-- Ich habe bereits nach geschaut ob ich mir nicht die passenden Zeilen einfach kopieren kann. Aber da fehlen abhängigkeiten.

/edit

Also ich brauch entweder ein tolles Script dass mir die mods direkt auf dem linux dedi abfragt & updated oder eben das workaround: ein script für windows, dass bei veränderung löscht, das konvert tool anschmeißt & eine ausgabe in ein textdokument stellt. Das JA für den linux server zu re download einer modifikation.

Was kostet mich das Script für Linux, dass direkt abfragt, läd & konvertiert? Es wäre nämlich auch toll wenn die Modupdates zeitnah stattfinden könnten.
Keleg is offline  
Reply


Similar Threads Similar Threads
Eine Datei von e*pvp auf Viren prüfen
07/23/2016 - Tutorials - 17 Replies
Eine Datei von e*pvp auf Viren prüfen Generelles: Hi Leute Da es leider Fakt ist, dass auf diesem Forum hier sehr oft Viren hochgeladen werden zeige ich euch heute wie ihr selber überprüfen könnt, ob ein Virus in einer Datei vorhanden ist. Die Fußnoten stehen unten im Thread. Zu Virustotal:Diese Seite ist ziemlicher Schrott, auch noch so viele Detections können false-positives sein und wenige Detections können mit einem gut gecrypteten Virus hingestellt werden. Ich würde VT insoweit...
[VB.NET]Prüfen ob eine Anwendung startet
03/23/2013 - .NET Languages - 14 Replies
Hey Leute, bei uns im Jugendhaus sind kleine Kinder, die immer was spielen wollen. Meist ist es Minecraft. Eigentlich immer. Nun wollte ich ein "kleines" Passwort-System schreiben, dass sie nicht mehr so einfach Minecraft etc. starten können.(Für jede Anwendung ein Passwort eingeben) Für Minecraft alleine habe ich es schon geschafft. Ich will es nun so haben: Pseudocode:
[Batch] If exist mehrere Dateien prüfen?
05/26/2012 - General Coding - 3 Replies
Hey Leute, Ich wollte nach sehr sehr langem Kopfzerbrechen fragen wie ich es hinkriege das der If-exist Befehl z.b 3 Dateien nach ihrem Dasein überprüft? Ich verzweifle richtig und sitze schon 1 Woche daran...
[Guide] Prüfen ob eine Seite per SQL Injection angreifbar ist.
10/28/2010 - Tutorials - 14 Replies
Achtung: Ich übernehme in keinster Weise Verantwortung dafür wenn ihr durch diesen Guide bei irgentwelchen Seiten was anstellt. 1) Um zu prüfen ob eine Seite per SQL Injection angreifbar ist müsst ihr einen Link finden der so aussieht: Die Seite braucht ganz einfach nur ein = in den URL. Bei der URL schreibt ihr noch ein ' dahinter, Bsp.: Wenn die Seite bzw. die Datenbank angreifbar ist, kriegt ihr eine MySQL Fehlermeldung so wie diese:



All times are GMT +2. The time now is 16:11.


Powered by vBulletin®
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2021 elitepvpers All Rights Reserved.