#! /usr/local/bin/perl # --------------------------------------------------------------------------- # msg : Meldungen anzeigen # Version: 1.0 # Datum: 01.10.1993 # Letzte Aenderung: 15.11.1993 # Autor: Dirk Pantring (ry76@rz.uni-karlsruhe.de) # Kurzbeschreibung: # # 13.02.1988 Aenderung der Message-Reihenfolge (sort by date, Uli Weiss) # 28.05.1996 System-Aufrufe und dergl. entfernt (Jochen Topf (ry94)) # 19.11.1996 Verpflichtungstext eingefuegt -- Andy # 27.06.1997 Hostname in .msgrc -- Andy # # --------------------------------------------------------------------------- # Globale Variablen: # $MSG wo liegt msg $MSG= "/usr/common/machine/msg"; # Einbinden der Lib: unshift (@INC, "$MSG/lib/"); require "msgadmin.pl" || die("Can't include msgadmin.pl !"); require "getopts.pl" || die("Can't include getopts.pl !"); # Globale Variablen und Initialisierung: # Commandline-Options init. &Getopts('haceq'); if (! -t STDOUT) { $opt_c = $opt_q = 1; $opt_e = 0; } # POOL Name des Pool, zu dem der Rechner gehoert @SHOWPOOLS = &GetActualPools; @ARGV = (); # Hilfe anzeigen, wenn -h if($opt_h) { &ShowHeader; print "Syntax:\t$0 [-a] [-c] [-q] [-h]\n"; print "\t -a: zeigt auch bereits gelesene Meldungen an\n"; print "\t -c: keine bildschirmweise Ausgabe \n"; print "\t -e: Einzelmeldungen \n"; print "\t -q: keinen Hinweis am Ende\n"; print "\t -h: diese Hilfe\n\n"; exit(2); } # Filedatum des Markerfiles feststellen if (!-f $MSGMARKER) { print "\n Bitte beachten Sie, dass Sie mit der weiteren Benutzung dieser Rechenanlage automatisch folgende Verpflichtung akzeptieren: \"Ich verpflichte mich, die Anlage nur fuer Zwecke einzusetzen, die unmittelbar der Forschung und der Lehre dienen, oder bei anderen Arbeiten die Rechenzeit entsprechend zu bezahlen. Bei Missbrauch, Hackversuchen, Beeintraechtigung Anderer wird die Benutzernummer auf allen Rechnern des Rechenzentrums gesperrt. Die Einhaltung der Verwaltungs- und Benutzungsverordnung des Rechenzentrums wird zugesichert.\" Sollten Sie damit nicht einverstanden sein, loggen Sie sich bitte aus. Die Verwaltungs- und Benutzungsverordnung des Rechenzentrums erhalten Sie in der Betriebsauskunft.\n\n"; print "\n==== Bitte druecken ====\r"; <>; print "\n"; system ("touch -am 0101000071 $MSGMARKER"); } @filestat = stat($MSGMARKER); $markerage = $filestat[9]; # Datum fuer Marker-File aktualisieren open(MARKER, ">$MSGMARKER"); print MARKER $HOSTNAME,"\n"; close MARKER; # Pruefen, ob RZserv-Verzeichnis erreichbar if (!-d $MSGDIR) {# MSGDIR ist nicht erreichbar... &ShowHeader; print "\n\n================== ACHTUNG ========================\n"; print "Das Message-Verzeichnis\n"; print "$MSGDIR ist nicht erreichbar !\n"; print "Wir verwenden die Kopie von heute Nacht.\n"; print "================== ACHTUNG ========================\n\n"; $MSGDIR = $MSGREADDIR; if (!-d $MSGDIR) {# MSGDIR ist nicht erreichbar... &ShowHeader; print "\n\n================== ABBRUCH ========================\n"; print "Das Message-Verzeichnis\n"; print "$MSGDIR ist nicht erreichbar !\n"; print "================== ABBRUCH ========================\n\n"; exit(1); } } # Commandline auswerten if (-d $MSGLOCALREADDIR) { foreach $file ( @SHOWPOOLS ) { $cmdpool .= "$MSGDIR*\.$file\.* $MSGLOCALREADDIR*\.$file\.* "; } } else { foreach $file ( @SHOWPOOLS ) { $cmdpool .= "$MSGDIR*\.$file\.* "; } } @msg = reverse sort (<${cmdpool}>); # Wenn kein -a, dann alte Meldungen ausfiltern if (! $opt_a) { for $i (@msg) { @filestat=stat($i); push(@msg2, $i) if ($filestat[9] > $markerage); } @msg = @msg2; } # alle Files des Pools anzeigen, die gefunden wurden if (!$opt_e && !$opt_c) { open(SAVEOUT, ">&STDOUT"); open(SAVEERR, ">&STDERR"); open(STDOUT,"|$MSGPAGER") || die "Can't redirect stdout to pager $MSGPAGER"; select(STDOUT); $| = 1; } print("\nZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n\n") if(@msg); foreach $file ( @msg ) { if ($opt_e) { &printfile("$file"); print "==== Bitte druecken ====\r"; <>; print "\n"; } else { &printfile("$file"); print("\nZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\n\n"); } } close(STDOUT); close(STDERR); open(STDOUT, ">&SAVEOUT"); open(STDERR, ">&SAVEERR"); # Quiet mode ? if(! $opt_q) { print "*** msg: Saemtliche Mitteilungen erhalten Sie durch Eingabe von msg -a\n"; } # --------------------------------------------------------------------- # -- ENDE des Hauptteils -- ab hier Sub-Routinen -- # --------------------------------------------------------------------- sub ShowHeader {# Anzeigen der Ueberschriftsmeldung print "=====================================================\n"; print "=== msg - Meldungen Anzeigen ===\n"; print "=== Version 1.1 von urle\@rz.uni-karlsruhe.de ===\n"; print "=====================================================\n\n"; }#end: Show Header sub printfile { local($file) = @_; open(FILE, "$file") || return 1; while() { print; } close FILE; } # ---------------------------------------------------------------------