letzte Zeile in Textdatei bei Neueintrag ausgeben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nihilist
Beiträge: 430
Registriert: 27.04.2006 21:17:06
Kontaktdaten:

letzte Zeile in Textdatei bei Neueintrag ausgeben

Beitrag von nihilist » 08.05.2007 19:54:51

Hallo,
Da ich aus anderen Threads weiß, das hier noch andere User den dynamischen window manager nutzen, wollt ich mal fragen
was ihr euch so in der Statuszeile anzeigen lässt.
Ich suche z.B. noch nach einer Möglichkeit mich über eingegangene Nachrichten in Centericq oder alternativ auch in Irssi/Bitlbee oder einen anderen Messenger zu informieren.

Hat sich da schon jemand was ausgedacht? So auf die schnelle würde mir einfallen sämtliche Gespräche mitzuloggen und dann über die Zeilenanzahl rückschlüsse darauf zu ziehen ob jemand geschrieben hat....
Gibt aber bestimmt noch optimalere Lösungen, wenn ja -> her damit ;-)


edit: Kann das mal jemand nach Graphische Oberflächen verschieben? Ich denke das passt besser...
Zuletzt geändert von nihilist am 14.05.2007 20:41:05, insgesamt 1-mal geändert.

nihilist
Beiträge: 430
Registriert: 27.04.2006 21:17:06
Kontaktdaten:

Beitrag von nihilist » 13.05.2007 13:32:19

um das ganze noch ein bischen zu konkretisieren:

Ich suche im Prinzip nur nach einer Möglichkeit änderungen im log von centericq
zu bemerken.
Ich habe mir das so vorgestellt:

Code: Alles auswählen

#!/bin/bash
LOG=$(cat /home/nihilist/.centericq/log | wc -l)

.....

if [LOGneu>LOGalt]; then
     echo "Neue Nachricht"
else
     echo "Keine neuen Nachrichten"

Leider habe ich keine Ahnung von bash-scripten. Kann mir da mal jemand auf
die Sprünge helfen?
Es müsste doch möglich sein die Zeilenanzahl des Logs zu speichern, und sobald eine neue hinzu
kommt wird das zum alten Wert und die Meldung wird ausgegeben.



edit: jetzt würde das Thema wohl eher in Scripting passen ;-)

crazyed

Beitrag von crazyed » 13.05.2007 15:53:39

Frag doch mal im IRC-Channel von dwm nach. Einfacher scheint mir die gewünschte Ausgabe mit sed zu werden.

nihilist
Beiträge: 430
Registriert: 27.04.2006 21:17:06
Kontaktdaten:

Beitrag von nihilist » 14.05.2007 20:37:43

ok, werde ich nachfragen.
Aber im Prinzip suche ich jetzt nur noch nach einer Möglichkeit, eine Textdatei dann
auszugeben sobald eine neue Zeile angehängt wird...
Da muss es doch was einfaches geben?

Das ganze würde ich dann mit dzen
http://dzen.googlecode.com/svn/trunk/README
kombinieren, und ich hätte meine Lösung.


edit: habe mal den Titel geändert, das passt jetzt besser dazu.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 14.05.2007 21:01:57

Vielleicht das:

Code: Alles auswählen

tail -n 0 -f /path/log

Methusalix

letzte Zeile in Textdatei bei Neueintrag ausgeben

Beitrag von Methusalix » 15.05.2007 00:53:48

Hallo,
centericq kenne ich nicht und kann dementsprechend nix dazu sagen.
Aber allgemein zur Frage und Deinen Ansatz aufgreifend:

Code: Alles auswählen

#!/bin/bash 
#Meldet mit einer Endlosschleife, ob sich ein neuer Eintrag
#im log befindet.
LOG=$(cat /var/log/messages | wc -l)	
	while true; do
		sleep  5
		NEWLOG=$(cat /var/log/messages | wc -l)
				if  [ ${NEWLOG} -gt ${LOG} ] ; then
					echo "Es hat sich im log was getan... "
					LOG=$NEWLOG
				fi
done
Zunächst wird die Zeilenzahl festgestellt. Danach wird eine
Endlosschleife gestartet, die -in diesem Fall- alle 5 Sek. prüft,
ob sich die Zeilenzahl erhöht hat und dann eine Reaktion ausgelöst.
Vielleicht kannst Du das als Basis benutzen.
Gruß
Matthias

Antworten