linux terminal auslesen und bei bestimmten wert counter erhöhern?

... komplette Frage anzeigen

2 Antworten

Hallo

wenn einer joint (join nachricht ist = player has entered the game. )
dann soll der alte counter addiert werden zu 1 und der neue counter
angezeigt und der alte geupdatet werden

Ich gehe mal davon aus das es ein Logfile gibt in dem protokolliert wird wenn jemand joint, also jeder join  eine neue Zeile mit "player has entered the game."
im Logfile erzeugt.

Das kann man mittels grep & wc auslesen und zählen:

grep -i "player has entered the game." logfile.log | wc -l

grep sucht die Zeilen raus die den STRING enthalten und wc zählt die ausgegebenen Zeilen. Diesen Wert kann man in eine Datei, nennen wir sie counter umleiten indem man die einfache Ausgabeumleitung > verwendet:

grep -i "player has entered the game." logfile.log | wc -l > counter

Dann hat man eine Datei in der eine Zahl steht, nämlich die aktuelle Anzahl der joins seit dem letzten Aufruf des Logfiles.

Damit kann man dann arbeiten, indem man abermals die Logdatei auswertet, was im Falle eines (oder mehrerer) joins einen höheren Wert gibt als der in der Datei counter ist. Die beiden Werte kann man dann mit einer if-Anweisung dann vergleichen.

Also so in etwa könnte das Shell-Script aussehen:

#!/bin/bash

grep -i "player has entered the game." logfile.log | wc -l | tee counter
sleep 10 # wartet 10 Sekunden

VAR1=$(cat counter) # Legt eine Variable mit dem Inhalt
# von counter an.
VAR2=$(grep -i "player has entered the game." logfile.log | wc -l)
# Legt eine Variable an mit dem
# aktuellen Wert des Logfiles

# Hier folgt dann die If-Anweisung für den Vergleich:
if [ $VAR1 -lt $VAR2 ] ;
then
echo $VAR2
fi

Dieses Script kannst Du dann mit einem Cron-Job so oft ausführen lassen wie Du möchtest.

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von daniel161500
19.01.2016, 08:31

Danke, ich werde versuchen einzubauen danke für deine hilfe

0
Kommentar von daniel161500
19.01.2016, 08:36

mir fehlt auf man kann es auch in eine while schleife bringen und damit den cron-job weglassen dann ist das immer aktuell

1

Was möchtest Du wissen?