logwatch Problem

M

madcat

Grünschnabel
Hallo,

ich kämpfe schon seit Tagen mit einem Logwatch-Problem. Zu den Details: OS: CentOS 5.5, logwatch-Version: 7.3.6

Beim Aufruf

Code:
logwatch  --service sshd --range yesterday --mailto max.mustermann@musternetz.de
(E-Mail-Adresse ist natürlich eine andere :-))

bekomme ich folgende Fehlermeldungen:

Code:
print() on unopened filehandle OUTFILE at /usr/sbin/logwatch line 1295.
print() on unopened filehandle OUTFILE at /usr/sbin/logwatch line 1296.
print() on unopened filehandle OUTFILE at /usr/sbin/logwatch line 1298.
print() on unopened filehandle OUTFILE at /usr/sbin/logwatch line 1301.

Die Datei logwatch.pl habe ich angehängt. Ich habe die Datei auch mit der Originaldatei vom logwatch-Project verglichen und kann keinen Fehler finden. Ich würde mich über jeden Tipp freuen!

Grüße
Madcat
 

Anhänge

  • logwatch.zip
    12,3 KB · Aufrufe: 3
Ich bin mir nicht sicher, wie streng perl mit Gueltigkeitsbereichen umgeht, doch das Skript legt OUTFILE innerhalb der Funktio 'initprint' an, und ich vermute, dass es dadruch ausserhalb von initprint auch nicht bekannt ist. Ich hatte gedacht, dass 'use strict' vor nicht-deklarierten Variablen warnt, doch das scheint bei Dir nicht der Fall zu sein.
Falls es nicht am Gueltigkeitsbereich liegen sollte, dann wohl daran, dass in den ganzen if-Klauseln in initprint die Kombination an Optionen, mit denen Du das Skript aufrufst, nicht mit abgedeckt ist und so OUTFILE eben nicht geoeffnet wurde.
 
Hallo,

danke für Deine Tipps! Ich habe jetzt mal folgendes getestet: Von einem zweiten Server, auf dem logwatch Version 7.3 intakt läuft, habe ich das Verzeichnis kopiert und erneut den Shellaufruf getestet und er brachte hier auch die gleichen Fehlermeldungen. Eine Syntaxüberprüfung mit der Option
Code:
#!/usr/bin/perl -c
im logwatch.pl-Skript brachte auch nichts. Der Fehler scheint hier am Perl-Interpreter zu liegen.

madcat
 
Dann versuch doch auch mal, das Skript von dem Problem-Server auf dem, wo es laeuft, aus. Vielleicht gibt es ja Unterschiede im Skript (kannst Du ja auch mit 'diff' untersuchen, ohne das Skript ausfuehren zu muessen).
 
So, habe ich auch nochmal getestet und das funktioniert prima. Der Host bei dem es funktioniert, hat centos 5.5 x86_64, Perl 5.8.8 mit Logwatch 7.3 installiert, der Problemhost hat centos 5.5 i386, Perl 5.8.8 und Logwatch 7.3.6 installiert. Beide sind also bis auf die Architektur gleich. Ich habe auch mal die CPAN-Module perl(Date::Manip), perl(Exporter), perl(File::Temp), perl(Getopt::Long) überprüft und perl(Date::Manip) aktualisiert (war eine alte Version). Gebracht hat es aber nichts. Irgendeinen Weg muss es doch geben...

Madcat
 
Hi,

also einen kleinen Fortschritt gibt es jetzt: Das Problem tritt nur auf, wenn man die Option
Code:
--service
ausgeführt. Führe ich stattdessen den Befehl
Code:
logwatch --range yesterday --mailto max.mustermann@musternetz.de
aus, wird die E-Mail ohne Fehlermeldungen verschickt. Also tritt die Fehlermeldung nur auf, wenn man einen Service angibt und dieser nicht verarbeitet werden kann.

Das eigentliche Problem liegt aber darin, dass logwatch mit der Option
Code:
--range all
alle Backup-Jobs ausgibt, so bald man aber einen anderen Auswertungszeitraum angibt, die E-Mail zwar ankommt, aber ohne Anzeige der Backup-Jobs. Hast Du vielleicht noch eine Idee woran das liegen könnte?

Madcat
 
'range' wird, wenn ich das richtig sehe, in dem Skript ab Zeile 851 verarbeitet. Zumindest in der Version, die Du geschickt hast, ist dort sowas wie das Wort 'yesterday' nicht vorgesehen. Es scheint mir eher so, als muesse man die Zeit in Sekunden angeben, aber ganz verstehe ich das Skript dort nicht. Vielleicht solltest Du das Problem doch mal an ********** schicken, wie es im Header vorgeschlagen wird, da zumindest ich leider nicht weiter in die Materie eindringen kann.
 
"range" ist eine Variable, die in der Datei /usr/share/logwatch/default.conf/logwatch.conf hinterlegt ist (habe Dir mal das Skript angefügt). Die möglichen Parameter, die man angeben kann sind z.B.: yesterday, today, all, '-XX days'

Einzig und allein gibt mir momentan der Parameter "all" in folgendem Schema den Bericht für die Ausführung der Backup-Jobs per Mail aus:
Code:
--------------------- bacula Begin ------------------------ 

Jobs Run:
2005-09-02 2012 backupNightlySave.2005-09-02_01.05.00
     BackupOK

2005-09-02 2013 scottNightlySave.2005-09-02_01.05.01
     BackupOK

2005-09-02 2014 marthaNightlySave.2005-09-02_01.05.02
     BackupOK

2005-09-02 2015 lyndaNightlySave.2005-09-02_01.05.03
     BackupOK

2005-09-02 2016 backupBackupCatalog.2005-09-02_01.10.00
     BackupOK


 ---------------------- bacula End -------------------------

So bald die Option in "today" oder ähnliches geändert wird, fehlt der komplette Backup-Bericht. Die Skripts für die Implementierung von Bacula in logwatch sind im Archiv der aktuellen Bacula-Version (5.0.3) auf bacula.org enthalten.

madcat
 

Anhänge

  • logwatch.zip
    12,3 KB · Aufrufe: 0

Ähnliche Themen

[Perl] Perl OO Methodenaufruf in anderem Objekt

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Akonadi startet nicht mehr

Apache /var/www zu /home/ich/www wechseln

Zurück
Oben