Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[solved] Erstellen einer LogDatei?

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

[solved] Erstellen einer LogDatei?

Beitrag von Seppi »

Hi @ all!!!

Ich habe gerade angefangen mit Linux zu arbeiten und deshalb auch noch nicht gerade viele Kenntnisse. Nun möchte eine LogDatei erstellen, die folgende Kriterien erfüllt:

:arrow: protokollieren aller eingeloggten user
:arrow: LogDatei alle 5 Sekunden aktualisieren
:arrow: Anhand des Dateinamens soll das Tagesdatum erkennbar sein, so dass die Informationen später leicht zu finden sind.
:arrow: Jeden Tag soll die Datei in einem Backup-Verzeichnis gesichert werden (das Original ist zu löschen).
:arrow: Jeden Monat werden die gesicherten Log-Dateien in ein Archiv gepackt, komprimiert und aus dem Backup-Verzeichnis gelöscht (zur Einsparung von Festplattenspeicherplatz, da die Log-Dateien recht groß werden können). Auch hier ist das Monatsdatum Bestandteil des Dateinamens.
:arrow: Die Protokollierung soll automatisch beim Systemstart begonnen werden.

Kann mir jemand helfen? :? :oops: :D
Ich will nicht unhöflich sein aber ich brauche die Hilfe dringend, da ich die Datei morgen am Start haben muss.

Ein kleines bischen weiß ich ja (die Auflistung mit w, die 5 Sek verzögerung mit sleep 5) aber ich weiß nicht wie und ob ich das ganze wie bei Java oder C(++) in eine Schleife packen kann, geschweige denn ob das überhaupt eine gute Idee ist!?

Also, jede Hilfe ist mir sehr willkommen und ich danke euch schon im vorraus!!!

MfG Seppi!!!
genius667

Beitrag von genius667 »

Alles unnötig... da dies bereits protokolliert wird und zwar in der Datei /var/log/wtmp

das ist eine binärdatei, die du mit

who /var/log/wtmp anschauen kannst.

Zum Thema Backups der Logfiles, diese löschen usw gibt es das Programm logrotate, welches mit 99% Wahrscheinlichkeit bereits bei dir läuft, bzw für das es einen cron job in /etc/cron.daily/ gibt.

Um die Standardeinstellungen zu ändern musst du die Datei /etc/logrotate.conf
editiren.

z. B. steht bei mir für wtmp drin

Code: Alles auswählen

/var/log/wtmp {
    monthly
    create 0664 root root
    rotate 1
}
[\code]
das bedeutet quasi, dass die Datei bei mir einmal im Monat gesichert + kompremiert wird und es maximal eine backupdatei gibt, findet eine neue Sicherung statt, wird die alte Backupdatei gelöscht.

So wie du das haben willst schauts in etwa so aus:

[code]
/var/log/wtmp {
    daily
    create 0664 root root
    rotate 30
    olddir /var/log/wtmpbackup
}
Das mit dem Datum im Dateinamen ist meiner Meinung nach überflüssig, da du ja mit:

Code: Alles auswählen

who /var/log/wtmp | grep DATUM
die user rauspicken kannst. Genauso bei den kompremierten log files:

Code: Alles auswählen

gzip -cd /var/log/wtmpbackup/foo | who - | grep DATUM
mfg

Andy
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

:P Vielen, vielen Dank!!!!!!!!!!
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

Wenn ich das so schreibe, wie du mir das geschildert hast...:

Code: Alles auswählen

 
/var/log/wtmp { 
daily 
create 0664 root root 
rotate 30 
olddir /var/log/wtmpbackup 
} 


...wird die die LogDatei doch nur 30 mal am Tag rotieren und nicht alle 5 Sekunden, wie ich das haben möchte! Oder ist das falsch?
genius667

Beitrag von genius667 »

Die Datei wird einmal pro tag rotiert und es werden 30 backup dateien gespeichert

Warum sollte man die log datei alle 5 Sekunden rotieren wollen?

mfg

Andy
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

Die LogDatei soll alle 5 Sekunden eventuelle Veränderungen registrieren , d.h ob sich neue user angemeldet haben oder sich welche abgemeldet haben. Dazu soll anhand des Dateinamens das Tagesdatum erkennbar sein. Die Backup-Datei soll täglich gesichert werden und jeden Monat werden die LogDateien in ein Archiv gepackt und aus dem Backup-Verzeichnis gelöscht. Das Archiv soll den Monatsnamen als Dateinamen bekommen.

Es soll garnichts rotieren. Ich muss eine neue LogDatei erstellen, die nach den obigen Kriterien arbeitet!

:!: Ich muss nur wissen, wie ich eine LogDatei erstelle, die sich alle 5 Sekunden aktualisiert und den Befehl "w" ausführt :!:
Benutzeravatar
moenk
Administrator
Administrator
Beiträge: 1398
Registriert: 15. Aug 2003, 15:36
Wohnort: N52° 27.966' E013° 20.087'
Kontaktdaten:

Beitrag von moenk »

Also eine "meindolleslog.sh" und sinngemäß sowas:

Code: Alles auswählen

nochmal:
w >> /var/log/meindolleslog.txt
sleep 5
goto nochmal
Und dann Start mit "meindolleslog.sh &".
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

Sollte meine Mail etwas patzig rübergekommen sein, entschuldige ich mich hiermit, das sollte sie nämlich eigentlich nicht!!! :oops:
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

Danke, aber kannst du mir die Befehle dann gleich mal erklären?? Damit ich auch noch was dazu lerne?? Wäre lieb!
genius667

Beitrag von genius667 »

Ich frag mich zwar, was der Grund ist...

die Datei /var/log/wtmp wird sofort aktualisiert, wenn ein user sich einloggt...

w ließt nichts anderes aus als die datei /var/run/utmp (die Datei gehört zur glibc wie wtmp)

mir bleibt eigentlich nichts anderes überig als dir zu sagen, dass du dich mal mit dem logsystem von linux auseinandersetzen solltest...

mfg

Andy
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

Sag das nicht mir, sag das lieber meinem intelligenten Lehrer. Der will das so wie ich es beschrieben habe von mir.
So wie du das sagst ist das scho logisch, nur leider muss ich mich an die Vorgaben halten.

MfG Seppi
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

:cry: Ich bekomme die Fehlermeldung:

goto: command not found

Woran liegt das?

MfG Seppi
genius667

Beitrag von genius667 »

Es gibt kein goto in der Bashprogrammierung

nur man nimmt goto häufig um Schleifen darzustellen, unabhängig von der Programmiersprache.

mfg

Andy
genius667

Beitrag von genius667 »

Wie lange hattest du eigentlich für diese Aufgabe Zeit, wenn man fragen darf :)

mfg

Andy
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

:oops: Man darf nicht fragen! :?
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

Kannst du mir den sagen wie ich die bash:

#!/bin/bash

w >> /var/log/meindolleslog.txt
sleep 5

in eine Schleife bekomme? Wir hatten dieses Thema (Schleifen) noch nicht. moenk hat ja "goto nochmal" geschrieben, aber wie setzte ich das um?

MfG Seppi

P.s: Ich hatte eine Woche für die Aufgabe Zeit, bin aber erst heute auf diese Seite gekommen!
genius667

Beitrag von genius667 »

Code: Alles auswählen

#!/bin/bash
while [ 1 ]; do
w >> /var/log/meindolleslog.txt
sleep 5
done
macht eine Endlosschleife, wobei w ständig in die Datei zu schreiben ziemlicher Schmarn ist, weil du dann doppelte Einträge hast, außerdem hast du durch w immer die Kopfzeile des w Kommandos in der log datei, was du ja sicher nicht willst?

Wenn ihr das wirklich mit w machen müsst und nicht mit who, dann musst du erst die oberste Zeile abschneiden und evtl vorher prüfen, ob sich überhaupt was an der w ausgabe geändert hat.

mfg

Andy
Seppi
Newbie
Newbie
Beiträge: 21
Registriert: 29. Feb 2004, 17:12

Beitrag von Seppi »

Mit who säh das dan so aus?

Code: Alles auswählen

#!/bin/bash 
while [ 1 ]; do 
who /var/log/meindolleslog.txt
sleep 5
done
Und so wäre das besser?

Sorry, dass ich so viele dumme Fragen stelle, aber ich habe gerade erst angefangen mit Linux zu arbeiten! :oops:

Wie würde den eine deiner Meinung nach bessere Lösung aussehen?

MfG Seppi
genius667

Beitrag von genius667 »

Zum Thema logfiles mit aktuellem Dateum abspeichern:

Code: Alles auswählen

datum=`date +%d.%m.%Y`
w >>/var/log/wlog.$datum
mfg

Andy
genius667

Beitrag von genius667 »

In was für einem Fach habt ihr denn das Aufbekommen, wenn du noch nie was mit Linux gemacht hast?

mfg

Andy
Antworten