--- loncom/loncron 2004/05/11 19:15:03 1.47 +++ loncom/loncron 2004/05/11 20:19:46 1.48 @@ -2,7 +2,7 @@ # Housekeeping program, started by cron, loncontrol and loncron.pl # -# $Id: loncron,v 1.47 2004/05/11 19:15:03 albertel Exp $ +# $Id: loncron,v 1.48 2004/05/11 20:19:46 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -28,13 +28,14 @@ # $|=1; +use strict; use lib '/home/httpd/lib/perl/'; use LONCAPA::Configuration; use IO::File; use IO::Socket; -use strict; +use HTML::Entities; #globals use vars qw (%perlvar %simplestatus $errors $warnings $notices $totalcount); @@ -66,11 +67,11 @@ sub log { sub errout { my $fh=shift; &log($fh,(< +
-
Notices$notices
Warnings$warnings
Errors$errors

Top

+

Top

ENDERROUT } @@ -84,7 +85,7 @@ sub start_daemon { system("$perlvar{'lonDaemons'}/$progname 2>>$perlvar{'lonDaemons'}/logs/${daemon}_errors"); sleep 2; if (-e $pidfile) { - &log($fh,"Seems like it started ...

"); + &log($fh,"

Seems like it started ...

"); my $lfh=IO::File->new("$pidfile"); my $daemonpid=<$lfh>; chomp($daemonpid); @@ -95,7 +96,7 @@ sub start_daemon { return 0; } } - &log($fh,"Seems like that did not work!

"); + &log($fh,"

Seems like that did not work!

"); $errors++; return 0; } @@ -103,7 +104,7 @@ sub start_daemon { sub checkon_daemon { my ($fh,$daemon,$maxsize,$sendusr1)=@_; - &log($fh,'

'.$daemon.'

Log

');
+    &log($fh,'

'.$daemon.'

Log

'); printf("%-10s ",$daemon); if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){ open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|"); @@ -115,7 +116,7 @@ sub checkon_daemon { }; close (DFH); } - &log($fh,"

"); + &log($fh,"

"); my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid"; @@ -157,7 +158,7 @@ sub checkon_daemon { } else { $errors++; &log($fh,"

$daemon at pid $daemonpid not responding

"); - &log($fh,"Give it one more try ...

"); + &log($fh,"

Give it one more try ...

"); print " "; if (&start_daemon($fh,$daemon,$pidfile)) { &log($fh,"

$daemon at pid $daemonpid responding

"); @@ -168,7 +169,7 @@ sub checkon_daemon { $simplestatus{$daemon}='failed'; $errors++; $errors++; &log($fh,"

$daemon at pid $daemonpid not responding

"); - &log($fh,"Unable to start $daemon

"); + &log($fh,"

Unable to start $daemon

"); } } @@ -181,7 +182,7 @@ sub checkon_daemon { if ($line=~/CRITICAL/) { $notices++; } }; close (DFH); - &log($fh,""); + &log($fh,"

"); } } @@ -193,7 +194,7 @@ sub checkon_daemon { $blksize,$blocks)=stat($fname); if ($size>$maxsize) { - &log($fh,"Rotating logs ...

"); + &log($fh,"

Rotating logs ...

"); rename("$fname.2","$fname.3"); rename("$fname.1","$fname.2"); rename("$fname","$fname.1"); @@ -205,7 +206,7 @@ sub checkon_daemon { # --------------------------------------------------------------------- Machine sub log_machine_info { my ($fh)=@_; - &log($fh,'

Machine Information

'); + &log($fh,'

Machine Information

'); &log($fh,"

loadavg

"); open (LOADAVGH,"/proc/loadavg"); @@ -228,7 +229,7 @@ sub log_machine_info { open (DFH,"df|"); while (my $line=) { - &log($fh,"$line"); + &log($fh,&encode_entities($line,'<>&"')); @parts=split(/\s+/,$line); my $usage=$parts[4]; $usage=~s/\W//g; @@ -252,7 +253,7 @@ sub log_machine_info { open (PSH,"ps -aux --cols 140 |"); while (my $line=) { - &log($fh,"$line"); + &log($fh,&encode_entities($line,'<>&"')); $psproc++; } close (PSH); @@ -278,35 +279,36 @@ sub start_logging { LON Status Report $perlvar{'lonHostID'} -
+

LON Status Report $perlvar{'lonHostID'}

$date ($now)

    -
  1. Configuration -
  2. Machine Information -
  3. Temporary Files -
  4. Session Tokens -
  5. httpd -
  6. lonsql -
  7. lond -
  8. lonc -
  9. lonhttpd -
  10. lonnet -
  11. Connections -
  12. Delayed Messages -
  13. Error Coindex.html.unt +
  14. Configuration
  15. +
  16. Machine Information
  17. +
  18. Temporary Files
  19. +
  20. Session Tokens
  21. +
  22. httpd
  23. +
  24. lonsql
  25. +
  26. lond
  27. +
  28. lonc
  29. +
  30. lonhttpd
  31. +
  32. lonnet
  33. +
  34. Connections
  35. +
  36. Delayed Messages
  37. +
  38. Error Count
-
- +
+

Configuration

PerlVars

- +
ENDHEADERS foreach my $varname (sort(keys(%perlvar))) { - &log($fh,"\n"); + &log($fh,"\n"); } - &log($fh,"
$varname$perlvar{$varname}
$varname". + &encode_entities($perlvar{$varname},'<>&"')."

Hosts

"); + &log($fh,"

Hosts

"); foreach my $id (sort(keys(%{$hostname}))) { &log($fh, "
$id".$hostdom->{$id}. @@ -315,7 +317,7 @@ ENDHEADERS } &log($fh,"

Spare Hosts

    "); foreach my $id (sort(keys(%{$spareid}))) { - &log($fh,"
  1. $id\n"); + &log($fh,"
  2. $id\n
  3. "); } &log($fh,"
\n"); return $fh; @@ -324,7 +326,7 @@ ENDHEADERS # --------------------------------------------------------------- clean out tmp sub clean_tmp { my ($fh)=@_; - &log($fh,'

Temporary Files

'); + &log($fh,'

Temporary Files

'); my $cleaned=0; my $old=0; while (my $fname=<$perlvar{'lonDaemons'}/tmp/*>) { @@ -357,7 +359,7 @@ sub clean_tmp { # ------------------------------------------------------------ clean out lonIDs sub clean_lonIDs { my ($fh)=@_; - &log($fh,'

Session Tokens

'); + &log($fh,'

Session Tokens

'); my $cleaned=0; my $active=0; while (my $fname=<$perlvar{'lonIDsDir'}/*>) { @@ -375,7 +377,7 @@ sub clean_lonIDs { $active++; } } - &log($fh,"

Cleaned up ".$cleaned." stale session token(s)."); + &log($fh,"

Cleaned up ".$cleaned." stale session token(s).

"); &log($fh,"

$active open session(s)

"); } @@ -383,10 +385,10 @@ sub clean_lonIDs { # ----------------------------------------------------------------------- httpd sub check_httpd_logs { my ($fh)=@_; - &log($fh,'

httpd

Access Log

');
+    &log($fh,'

httpd

Access Log

');
     
     open (DFH,"tail -n25 /etc/httpd/logs/access_log|");
-    while (my $line=) { &log($fh,"$line") };
+    while (my $line=) { &log($fh,&encode_entities($line,'<>&"')) };
     close (DFH);
 	
     &log($fh,"

Error Log

");
@@ -403,14 +405,14 @@ sub check_httpd_logs {
 
 # ---------------------------------------------------------------------- lonnet
 
-sub rotate_logs {
+sub rotate_lonnet_logs {
     my ($fh)=@_;
-    &log($fh,'

lonnet

Temp Log

');
+    &log($fh,'

lonnet

Temp Log

');
     print "checking logs\n";
     if (-e "$perlvar{'lonDaemons'}/logs/lonnet.log"){
 	open (DFH,"tail -n50 $perlvar{'lonDaemons'}/logs/lonnet.log|");
 	while (my $line=) { 
-	    &log($fh,"$line");
+	    &log($fh,&encode_entities($line,'<>&"'));
 	}
 	close (DFH);
     }
@@ -419,7 +421,7 @@ sub rotate_logs {
     if (-e "$perlvar{'lonDaemons'}/logs/lonnet.perm.log") {
 	open(DFH,"tail -n10 $perlvar{'lonDaemons'}/logs/lonnet.perm.log|");
 	while (my $line=) { 
-	    &log($fh,"$line");
+	    &log($fh,&encode_entities($line,'<>&"'));
 	}
 	close (DFH);
     } else { &log($fh,"No perm log\n") }
@@ -432,7 +434,7 @@ sub rotate_logs {
 	$blksize,$blocks)=stat($fname);
 
     if ($size>40000) {
-	&log($fh,"Rotating logs ...

"); + &log($fh,"

Rotating logs ...

"); rename("$fname.2","$fname.3"); rename("$fname.1","$fname.2"); rename("$fname","$fname.1"); @@ -445,9 +447,9 @@ sub rotate_logs { # ----------------------------------------------------------------- Connections sub test_connections { my ($fh,$hostname)=@_; - &log($fh,'

Connections

'); + &log($fh,'

Connections

'); print "testing connections\n"; - &log($fh,""); + &log($fh,"
"); foreach my $tryserver (sort(keys(%{$hostname}))) { print("."); my $result; @@ -471,7 +473,7 @@ sub test_connections { # ------------------------------------------------------------ Delayed messages sub check_delayed_msg { my ($fh)=@_; - &log($fh,'

Delayed Messages

'); + &log($fh,'

Delayed Messages

'); print "checking buffers\n"; &log($fh,'

Scanning Permanent Log

'); @@ -490,28 +492,29 @@ sub check_delayed_msg { if ($sdf eq 'D') { $unsend++; } } - &log($fh,"Total unsend messages: $unsend

\n"); + &log($fh,"

Total unsend messages: $unsend

\n"); $warnings=$warnings+5*$unsend; if ($unsend) { $simplestatus{'unsend'}=$unsend; } - &log($fh,"

Outgoing Buffer

"); + &log($fh,"

Outgoing Buffer

\n
");
 
     open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");
     while (my $line=) { 
-	&log($fh,"$line
"); + &log($fh,&encode_entities($line,'<>&"')); } + &log($fh,"
\n"); close (DFH); } sub finish_logging { my ($fh)=@_; - &log($fh,"
\n"); + &log($fh,"\n"); $totalcount=$notices+4*$warnings+100*$errors; &errout($fh); &log($fh,"

Total Error Count: $totalcount

"); my $now=time; my $date=localtime($now); - &log($fh,"
$date ($now)\n"); + &log($fh,"
$date ($now)\n"); print "lon-status webpage updated\n"; $fh->close(); @@ -581,15 +584,12 @@ sub main () { my (%hostname,%hostdom,%hostrole,%spareid); while (my $configline=<$config>) { + next if ($configline =~ /^(\#|\s*$)/); my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline); if ($id && $domain && $role && $name && $ip) { $hostname{$id}=$name; $hostdom{$id}=$domain; $hostrole{$id}=$role; - } else { - if ($configline) { -# &logthis("Skipping hosts.tab line -$configline-"); - } } } undef $config; @@ -617,6 +617,7 @@ sub main () { &clean_tmp($fh); &clean_lonIDs($fh); &check_httpd_logs($fh); + &rotate_lonnet_logs($fh); &checkon_daemon($fh,'lonsql',200000); &checkon_daemon($fh,'lond',40000,1); &checkon_daemon($fh,'lonc',40000,1);