Frage von daniel161500, 44

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

hallo liebe community, Ich wollte für einen meiner server ein counter erstellen. Der aufbau läuft wie folgt wenn jemand auf den gameserver joint dann wird ein text in die konsole geschrieben und wenn dieser text aufkommt dann wird der counter um 1 ehöhrt das heißt der counter startet bei 0 und wenn einer auf den server joint dann wird die 0 zu 1 und der nächste ist dann 2 usw

da es ein linux system ist denk ich es wäre gut das in shell zu programmieren

habe jetzt bischen vorraus gedacht

Da ich die java grundlagen kann schreibe ich das bsp programm in java..(ist ein bsp deswegen können da fehler drinnen sein da ich es auch erst lerne :D)

das weiß ich nicht wie das heißt und brauche dort die hilfe

name: counter.sh

code:

int ocounter = 0; int ncounter;

newvalue = ncounter=ocounter

if (counter)

* search _in_process* aip;

inline_text "player has entered the game.";

then

system.out.ln"ncounter";

und wer gerade mein kopfstrom an gedanken dafür nicht verstanden hat

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

Hoffe ihr versteht was ich meine und könnt mir helfen.

Ich bedanke mich schonmal für jede hilfe

bitte schreibt nicht lern erstmal programmieren bevor du sowas schreibst ich bin ja dabei aber ich brauche es jetzt!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Linuxhase, Community-Experte für PC, 16

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

Kommentar von daniel161500 ,

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

Kommentar von daniel161500 ,

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

Antwort
von MarcelDavis321, 24

http://stackoverflow.com/questions/3113005/how-do-you-process-the-output-of-a-co...

das ist eig alles was du brauchst. Da dein Pseudocode für mich wenig Sinn ergibt versuch ichs mal

var counter = 0

if(readLine() equals("Player joined game"))

  counter = counter +1

  echo counter

Keine passende Antwort gefunden?

Fragen Sie die Community