version 1.95, 2011/11/14 17:27:34
|
version 1.100, 2014/03/17 14:47:38
|
Line 32 use strict;
|
Line 32 use strict;
|
|
|
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
|
use LONCAPA::Checksumming; |
use LONCAPA; |
use LONCAPA; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncommon; |
use Apache::loncommon; |
Line 270 sub log_machine_info {
|
Line 271 sub log_machine_info {
|
|
|
&log($fh,"<h3>distprobe</h3>"); |
&log($fh,"<h3>distprobe</h3>"); |
&log($fh,"<pre>"); |
&log($fh,"<pre>"); |
open(DSH,"$perlvar{'lonDaemons'}/distprobe |"); |
&log($fh,&encode_entities(&LONCAPA::distro(),'<>&"')); |
while (my $line=<DSH>) { |
|
&log($fh,&encode_entities($line,'<>&"')); |
|
$psproc++; |
|
} |
|
close(DSH); |
|
&log($fh,"</pre>"); |
&log($fh,"</pre>"); |
|
|
&errout($fh); |
&errout($fh); |
Line 530 sub check_httpd_logs {
|
Line 526 sub check_httpd_logs {
|
sub rotate_lonnet_logs { |
sub rotate_lonnet_logs { |
my ($fh)=@_; |
my ($fh)=@_; |
&log($fh,'<hr /><a name="lonnet" /><h2>lonnet</h2><h3>Temp Log</h3><pre>'); |
&log($fh,'<hr /><a name="lonnet" /><h2>lonnet</h2><h3>Temp Log</h3><pre>'); |
print "checking logs\n"; |
print "Checking logs.\n"; |
if (-e "$perlvar{'lonDaemons'}/logs/lonnet.log"){ |
if (-e "$perlvar{'lonDaemons'}/logs/lonnet.log"){ |
open (DFH,"tail -n50 $perlvar{'lonDaemons'}/logs/lonnet.log|"); |
open (DFH,"tail -n50 $perlvar{'lonDaemons'}/logs/lonnet.log|"); |
while (my $line=<DFH>) { |
while (my $line=<DFH>) { |
Line 574 sub rotate_other_logs {
|
Line 570 sub rotate_other_logs {
|
sub test_connections { |
sub test_connections { |
my ($fh)=@_; |
my ($fh)=@_; |
&log($fh,'<hr /><a name="connections" /><h2>Connections</h2>'); |
&log($fh,'<hr /><a name="connections" /><h2>Connections</h2>'); |
print "testing connections\n"; |
print "Testing connections.\n"; |
&log($fh,"<table border='2'>"); |
&log($fh,"<table border='2'>"); |
my ($good,$bad)=(0,0); |
my ($good,$bad)=(0,0); |
my %hostname = &Apache::lonnet::all_hostnames(); |
my %hostname = &Apache::lonnet::all_hostnames(); |
Line 608 sub test_connections {
|
Line 604 sub test_connections {
|
sub check_delayed_msg { |
sub check_delayed_msg { |
my ($fh)=@_; |
my ($fh)=@_; |
&log($fh,'<hr /><a name="delayed" /><h2>Delayed Messages</h2>'); |
&log($fh,'<hr /><a name="delayed" /><h2>Delayed Messages</h2>'); |
print "checking buffers\n"; |
print "Checking buffers.\n"; |
|
|
&log($fh,'<h3>Scanning Permanent Log</h3>'); |
&log($fh,'<h3>Scanning Permanent Log</h3>'); |
|
|
Line 658 sub check_delayed_msg {
|
Line 654 sub check_delayed_msg {
|
}; |
}; |
if ($@ && $@ =~ m/TIMEOUT/) { |
if ($@ && $@ =~ m/TIMEOUT/) { |
&log($fh,"Attempted pong to $tryserver timed out<br />"); |
&log($fh,"Attempted pong to $tryserver timed out<br />"); |
print "time out while contacting: $tryserver for pong\n"; |
print "Time out while contacting: $tryserver for pong.\n"; |
} else { |
} else { |
&log($fh,"Pong to $tryserver: $answer<br />"); |
&log($fh,"Pong to $tryserver: $answer<br />"); |
} |
} |
Line 677 sub finish_logging {
|
Line 673 sub finish_logging {
|
my $now=time; |
my $now=time; |
my $date=localtime($now); |
my $date=localtime($now); |
&log($fh,"<hr />$date ($now)</body></html>\n"); |
&log($fh,"<hr />$date ($now)</body></html>\n"); |
print "lon-status webpage updated\n"; |
print "lon-status webpage updated.\n"; |
$fh->close(); |
$fh->close(); |
|
|
if ($errors) { $simplestatus{'errors'}=$errors; } |
if ($errors) { $simplestatus{'errors'}=$errors; } |
Line 698 sub log_simplestatus {
|
Line 694 sub log_simplestatus {
|
} |
} |
|
|
sub write_loncaparevs { |
sub write_loncaparevs { |
print "Retrieving LON-CAPA version information\n"; |
print "Retrieving LON-CAPA version information.\n"; |
if (open(my $fh,">$perlvar{'lonTabDir'}/loncaparevs.tab")) { |
my %hostname = &Apache::lonnet::all_hostnames(); |
my %hostname = &Apache::lonnet::all_hostnames(); |
my $output; |
foreach my $id (sort(keys(%hostname))) { |
foreach my $id (sort(keys(%hostname))) { |
if ($id ne '') { |
if ($id ne '') { |
my $loncaparev; |
my $loncaparev; |
|
eval { |
|
local $SIG{ ALRM } = sub { die "TIMEOUT" }; |
|
alarm(10); |
|
$loncaparev = |
|
&Apache::lonnet::get_server_loncaparev('',$id,1,'loncron'); |
|
alarm(0); |
|
}; |
|
if ($@ && $@ =~ m/TIMEOUT/) { |
|
print "Time out while contacting lonHost: $id for version.\n"; |
|
} |
|
if ($loncaparev =~ /^[\w.\-]+$/) { |
|
$output .= $id.':'.$loncaparev."\n"; |
|
} |
|
} |
|
} |
|
if ($output) { |
|
if (open(my $fh,">$perlvar{'lonTabDir'}/loncaparevs.tab")) { |
|
print $fh $output; |
|
close($fh); |
|
&Apache::lonnet::load_loncaparevs(); |
|
} |
|
} |
|
return; |
|
} |
|
|
|
sub write_serverhomeIDs { |
|
print "Retrieving LON-CAPA lonHostID information.\n"; |
|
my %name_to_host = &Apache::lonnet::all_names(); |
|
my $output; |
|
foreach my $name (sort(keys(%name_to_host))) { |
|
if ($name ne '') { |
|
if (ref($name_to_host{$name}) eq 'ARRAY') { |
|
my $serverhomeID; |
eval { |
eval { |
local $SIG{ ALRM } = sub { die "TIMEOUT" }; |
local $SIG{ ALRM } = sub { die "TIMEOUT" }; |
alarm(10); |
alarm(10); |
$loncaparev = |
$serverhomeID = |
&Apache::lonnet::get_server_loncaparev('',$id,1,'loncron'); |
&Apache::lonnet::get_server_homeID($name,1,'loncron'); |
alarm(0); |
alarm(0); |
}; |
}; |
if ($@ && $@ =~ m/TIMEOUT/) { |
if ($@ && $@ =~ m/TIMEOUT/) { |
print "time out while contacting lonHost: $id for version\n"; |
print "Time out while contacting server: $name\n"; |
} |
} |
if ($loncaparev =~ /^[\w.\-]+$/) { |
if ($serverhomeID ne '') { |
print $fh $id.':'.$loncaparev."\n"; |
$output .= $name.':'.$serverhomeID."\n"; |
|
} else { |
|
$output .= $name.':'.$name_to_host{$name}->[0]."\n"; |
} |
} |
} |
} |
} |
} |
close($fh); |
} |
|
if ($output) { |
|
if (open(my $fh,">$perlvar{'lonTabDir'}/serverhomeIDs.tab")) { |
|
print $fh $output; |
|
close($fh); |
|
&Apache::lonnet::load_serverhomeIDs(); |
|
} |
} |
} |
return; |
return; |
} |
} |
|
|
sub write_serverhomeIDs { |
sub write_checksums { |
print "Retrieving LON-CAPA lonHostID information\n"; |
my $distro = &LONCAPA::distro(); |
if (open(my $fh,">$perlvar{'lonTabDir'}/serverhomeIDs.tab")) { |
if ($distro) { |
my %name_to_host = &Apache::lonnet::all_names(); |
print "Retrieving file version and checksumming.\n"; |
foreach my $name (sort(keys(%name_to_host))) { |
my $numchksums = 0; |
if ($name ne '') { |
my ($chksumsref,$versionsref) = |
if (ref($name_to_host{$name}) eq 'ARRAY') { |
&LONCAPA::Checksumming::get_checksums($distro,$perlvar{'lonDaemons'}, |
my $serverhomeID; |
$perlvar{'lonLib'}, |
eval { |
$perlvar{'lonIncludes'}, |
local $SIG{ ALRM } = sub { die "TIMEOUT" }; |
$perlvar{'lonTabDir'}); |
alarm(10); |
if (ref($chksumsref) eq 'HASH') { |
$serverhomeID = |
$numchksums = scalar(keys(%{$chksumsref})); |
&Apache::lonnet::get_server_homeID($name,1,'loncron'); |
|
alarm(0); |
|
}; |
|
if ($@ && $@ =~ m/TIMEOUT/) { |
|
print "Time out while contacting server: $name\n"; |
|
} |
|
if ($serverhomeID ne '') { |
|
print $fh $name.':'.$serverhomeID."\n"; |
|
} else { |
|
print $fh $name.':'.$name_to_host{$name}->[0]."\n"; |
|
} |
|
} |
|
} |
|
} |
} |
close($fh); |
print "File version retrieved and checksumming completed for $numchksums files.\n"; |
|
} else { |
|
print "File version retrieval and checksumming skipped - could not determine Linux distro.\n"; |
} |
} |
return; |
return; |
} |
} |
|
|
sub send_mail { |
sub send_mail { |
print "sending mail\n"; |
print "Sending mail.\n"; |
my $defdom = $perlvar{'lonDefDomain'}; |
my $defdom = $perlvar{'lonDefDomain'}; |
my $origmail = $perlvar{'lonAdmEMail'}; |
my $origmail = $perlvar{'lonAdmEMail'}; |
my $emailto = &Apache::loncommon::build_recipient_list(undef, |
my $emailto = &Apache::loncommon::build_recipient_list(undef, |
Line 774 sub send_mail {
|
Line 800 sub send_mail {
|
|
|
sub usage { |
sub usage { |
print(<<USAGE); |
print(<<USAGE); |
loncron - housekeeping program that checks up on various parts of Lon-CAPA |
loncron - housekeeping program that checks up on various parts of LON-CAPA |
|
|
Options: |
Options: |
--help Display |
--help Display |
Line 830 sub main () {
|
Line 856 sub main () {
|
# ----------------------------- Make sure this process is running from user=www |
# ----------------------------- Make sure this process is running from user=www |
my $wwwid=getpwnam('www'); |
my $wwwid=getpwnam('www'); |
if ($wwwid!=$<) { |
if ($wwwid!=$<) { |
print("User ID mismatch. This program must be run as user 'www'\n"); |
print("User ID mismatch. This program must be run as user 'www'.\n"); |
my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; |
my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; |
my $subj="LON: $perlvar{'lonHostID'} User ID mismatch"; |
my $subj="LON: $perlvar{'lonHostID'} User ID mismatch"; |
system("echo 'User ID mismatch. loncron must be run as user www.' |\ |
system("echo 'User ID mismatch. loncron must be run as user www.' |\ |
mailto $emailto -s '$subj' > /dev/null"); |
mailto $emailto -s '$subj' > /dev/null"); |
exit 1; |
exit 1; |
} |
} |
Line 905 sub main () {
|
Line 931 sub main () {
|
&log_simplestatus(); |
&log_simplestatus(); |
&write_loncaparevs(); |
&write_loncaparevs(); |
&write_serverhomeIDs(); |
&write_serverhomeIDs(); |
|
&write_checksums(); |
if ($totalcount>200 && !$noemail) { &send_mail(); } |
if ($totalcount>200 && !$noemail) { &send_mail(); } |
} |
} |
} |
} |
Line 913 sub main () {
|
Line 939 sub main () {
|
&main(); |
&main(); |
1; |
1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|