[LON-CAPA-cvs] cvs: loncom / loncron

albertel lon-capa-cvs@mail.lon-capa.org
Tue, 11 May 2004 21:08:55 -0000


albertel		Tue May 11 17:08:55 2004 EDT

  Modified files:              
    /loncom	loncron 
  Log:
  - add command line args to loncron
  
  
Index: loncom/loncron
diff -u loncom/loncron:1.48 loncom/loncron:1.49
--- loncom/loncron:1.48	Tue May 11 16:19:46 2004
+++ loncom/loncron	Tue May 11 17:08:55 2004
@@ -2,7 +2,7 @@
 
 # Housekeeping program, started by cron, loncontrol and loncron.pl
 #
-# $Id: loncron,v 1.48 2004/05/11 20:19:46 albertel Exp $
+# $Id: loncron,v 1.49 2004/05/11 21:08:55 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -36,6 +36,7 @@
 use IO::File;
 use IO::Socket;
 use HTML::Entities;
+use Getopt::Long;
 #globals
 use vars qw (%perlvar %simplestatus $errors $warnings $notices $totalcount);
 
@@ -450,22 +451,27 @@
     &log($fh,'<hr /><a name="connections" /><h2>Connections</h2>');
     print "testing connections\n";
     &log($fh,"<table border='2'>");
+    my ($good,$bad)=(0,0);
     foreach my $tryserver (sort(keys(%{$hostname}))) {
 	print(".");
 	my $result;
 	my $answer=reply("pong",$tryserver);
 	if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
 	    $result="<b>ok</b>";
+	    $good++;
 	} else {
 	    $result=$answer;
 	    $warnings++;
-	    if ($answer eq 'con_lost') { $warnings++; }
+	    if ($answer eq 'con_lost') {
+		$bad++;
+		$warnings++;
+	    }
 	}
 	if ($answer =~ /con_lost/) { print(" $tryserver down\n"); }
 	&log($fh,"<tr><td>$tryserver</td><td>$result</td></tr>\n");
     }
     &log($fh,"</table>");
-
+    print "\n$good good, $bad bad connections\n";
     &errout($fh);
 }
 
@@ -545,8 +551,36 @@
     system("metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html");
 }
 
+sub usage {
+    print(<<USAGE);
+loncron - housekeeping program that checks up on various parts of Lon-CAPA
+
+Options:
+   --help     Display help
+   --oldlonc  When starting the lonc daemon use 'lonc' not 'loncnew'
+   --noemail  Do not send the status email
+   --justcheckconnections  Only check the current status of the lonc/d
+                                connections, do not send emails do not
+                                check if the daemons are running, do not
+                                generate lon-status
+   --justcheckdaemons      Only check that all of the Lon-CAPA daemons are
+                                running, do not send emails do not
+                                check the lonc/d connections, do not
+                                generate lon-status
+                           
+USAGE
+}
+
 # ================================================================ Main Program
 sub main () {
+    my ($oldlonc,$help,$justcheckdaemons,$noemail,$justcheckconnections);
+    &GetOptions("help"                 => \$help,
+		"oldlonc"              => \$oldlonc,
+		"justcheckdaemons"     => \$justcheckdaemons,
+		"noemail"              => \$noemail,
+		"justcheckconnections" => \$justcheckconnections
+		);
+    if ($help) { &usage(); return; }
 # --------------------------------- Read loncapa_apache.conf and loncapa.conf
     my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
     %perlvar=%{$perlvarref};
@@ -584,7 +618,7 @@
     
     my (%hostname,%hostdom,%hostrole,%spareid);
     while (my $configline=<$config>) {
-	next if ($configline =~ /^(\#|\s*$)/);
+	next if ($configline =~ /^(\#|\s*\$)/);
 	my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);
 	if ($id && $domain && $role && $name && $ip) {
 	    $hostname{$id}=$name;
@@ -611,25 +645,33 @@
     $warnings=0;
     $notices=0;
 
-    my $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);
-
-    &log_machine_info($fh);
-    &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);
-    &checkon_daemon($fh,'lonhttpd',40000);
-    
-    &test_connections($fh,\%hostname);
-    &check_delayed_msg($fh);
-
-    &finish_logging($fh);
-    &log_simplestatus();
 	
-    if ($totalcount>200) { &send_mail(); }
+    my $fh;
+    if (!$justcheckdaemons && !$justcheckconnections) {
+	$fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);
+
+	&log_machine_info($fh);
+	&clean_tmp($fh);
+	&clean_lonIDs($fh);
+	&check_httpd_logs($fh);
+	&rotate_lonnet_logs($fh);
+    }
+    if (!$justcheckconnections) {
+	&checkon_daemon($fh,'lonsql',200000);
+	&checkon_daemon($fh,'lond',40000,1);
+	&checkon_daemon($fh,'lonc',40000,1);
+	&checkon_daemon($fh,'lonhttpd',40000);
+    }
+    if (!$justcheckdaemons) {
+	&test_connections($fh,\%hostname);
+    }
+    if (!$justcheckdaemons && !$justcheckconnections) {
+	&check_delayed_msg($fh);
+	&finish_logging($fh);
+	&log_simplestatus();
+	
+	if ($totalcount>200 && !$noemail) { &send_mail(); }
+    }
 }
 
 &main();