--- loncom/Attic/lonManage 2003/08/18 11:08:07 1.12 +++ loncom/Attic/lonManage 2003/09/16 09:49:54 1.15 @@ -3,9 +3,9 @@ # # lonManage supports remote management of nodes in a LonCAPA cluster. # -# $Id: lonManage,v 1.12 2003/08/18 11:08:07 foxr Exp $ +# $Id: lonManage,v 1.15 2003/09/16 09:49:54 foxr Exp $ # -# $Id: lonManage,v 1.12 2003/08/18 11:08:07 foxr Exp $ +# $Id: lonManage,v 1.15 2003/09/16 09:49:54 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,7 +36,7 @@ # lonManage -push newfile host # Push to the lonTabs directory. Note that # must be one of: -# hosts (hosts.tab) +# host (hosts.tab) # domain (domain.tab) # # lonManage -reinit lonc host @@ -50,6 +50,19 @@ # not the IP address of the host. # # $Log: lonManage,v $ +# Revision 1.15 2003/09/16 09:49:54 foxr +# Adjust the usage message to reflect what actually will happen on +# --reinit={lond|lonc} +# +# Revision 1.14 2003/09/08 09:45:20 foxr +# Remove BUGBUG about comment about authentication as we'll be doing +# host based authentication initially (no need for lonManage to do anything), +# and certificate based later (need at that time). +# +# Revision 1.13 2003/08/19 10:26:24 foxr +# Initial working version... tested against an unmodified lond this +# produces an unknown_cmd response which is about what I'd expect. +# # Revision 1.12 2003/08/18 11:08:07 foxr # Debug request building in Transact. # @@ -93,33 +106,42 @@ # # + + # Modules required: use strict; # Because it's good practice. use English; # Cause I like meaningful names. use Getopt::Long; use LONCAPA::Configuration; # To handle configuration I/O. +use IO::Socket::UNIX; # To communicate with lonc. # File scoped variables: my %perlvar; # Perl variable defs from apache config. my %hostshash; # Host table as a host indexed hash. +# +# prints out utility's command usage info. +# sub Usage { print "Usage:"; print < newfile host Push to the lonTabs directory. Note that must be one of: - hosts (hosts.tab) + host (hosts.tab) domain (domain.tab) lonManage --reinit=lonc host - Sends a HUP signal to the remote systems's lond. + Causes lonc in the remote system to reread hosts.tab and + adjust the set of clients that are being maintained to match + the new file. + lonManage --reinit=lond host - Requests the remote system's lond perform the same action as if - it had received a HUP signal. + Causes lond in the remote system to reread the hosts.tab file + and adjust the set of servers to match changes in that file. In the above syntax, the host above is the hosts.tab name of a host, not the IP address of the host. @@ -127,7 +149,30 @@ USAGE } - +# +# Lifted from lonnet.pm - and we need to figure out a way to get it back in. +# Performas a transaction with lond via the lonc proxy server. +# Parameter: +# cmd - The text of the request. +# host - The host to which the request ultimately goes. +# Returns: +# The text of the reply from the lond or con_lost if not able to contact +# lond/lonc etc. +# +sub subreply { + my ($cmd,$server)=@_; + my $peerfile="$perlvar{'lonSockDir'}/$server"; + my $client=IO::Socket::UNIX->new(Peer =>"$peerfile", + Type => SOCK_STREAM, + Timeout => 10) + or return "con_lost"; + print $client "$cmd\n"; + my $answer=<$client>; + if (!$answer) { $answer="con_lost"; } + chomp($answer); + return $answer; +} +# >>> BUGBUG <<< # # Use Getopt::Long to parse the parameters of the program. # @@ -238,6 +283,9 @@ sub ValidHost { return defined $hostshash{$host}; } + + + # # Performs a transaction with lonc. # By the time this is called, the transaction has already been @@ -278,9 +326,12 @@ sub Transact { } else { $request .= "\n"; } - # Body is now built.. + # Body is now built... transact with lond.. + + my $answer = subreply($request, $host); + + print "$answer\n"; - print "$request"; } # # Called to push a file to the remote system. @@ -298,6 +349,8 @@ sub Transact { # tablefile - name of the file containing the table to push. # host - name of the host to push this file to. # +# >>>BUGBUG<<< This belongs in lonnet.pm. +# sub PushFile { my $tablename = shift; my $tablefile = shift; @@ -339,6 +392,8 @@ sub PushFile { # process - The name of the process to reinit (lonc or lond). # host - The host in which this reinit will happen. # +# >>>BUGBUG<<<< This belongs in lonnet.pm +# sub ReinitProcess { my $process = shift; my $host = shift; @@ -428,6 +483,9 @@ Usage: =item strict =item Getopt::Long =item English +=item IO::Socket::UNIX + +=head1 KEY Subroutines. =head1 CATEGORIES Command line utility