Annotation of loncom/lonManage, revision 1.5
1.1 foxr 1: #!/usr/bin/perl
2: # The LearningOnline Network with CAPA
3: #
4: # lonManage supports remote management of nodes in a LonCAPA cluster.
5: #
1.5 ! foxr 6: # $Id: lonManage,v 1.4 2003/08/12 10:40:44 foxr Exp $
1.1 foxr 7: #
1.5 ! foxr 8: # $Id: lonManage,v 1.4 2003/08/12 10:40:44 foxr Exp $
1.1 foxr 9: #
10: # Copyright Michigan State University Board of Trustees
11: #
12: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
13: ## LON-CAPA is free software; you can redistribute it and/or modify
14: # it under the terms of the GNU General Public License as published by
15: # the Free Software Foundation; either version 2 of the License, or
16: # (at your option) any later version.
17: #
18: # LON-CAPA is distributed in the hope that it will be useful,
19: # but WITHOUT ANY WARRANTY; without even the implied warranty of
20: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21: # GNU General Public License for more details.
22: #
23: # You should have received a copy of the GNU General Public License
24: # along with LON-CAPA; if not, write to the Free Software
25: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26: #
27: # /home/httpd/html/adm/gpl.txt
28: #
29: # http://www.lon-capa.org/
30: #
31: #
32: # lonManage supports management of remot nodes in a lonCAPA cluster.
33: # it is a command line tool. The following command line syntax (usage)
34: # is supported:
35: #
36: # lonManage -push <tablename> newfile host
37: # Push <tablename> to the lonTabs directory. Note that
38: # <tablename> must be one of:
39: # hosts (hosts.tab)
40: # domain (domain.tab)
41: #
42: # lonManage -reinit lonc host
43: # Sends a HUP signal to the remote systems's lond.
44: #
45: # lonmanage -reinit lond host
46: # Requests the remote system's lond perform the same action as if
47: # it had received a HUP signal.
48: #
49: # In the above syntax, the host above is the hosts.tab name of a host,
50: # not the IP address of the host.
51: #
1.3 foxr 52: # $Log: lonManage,v $
1.5 ! foxr 53: # Revision 1.4 2003/08/12 10:40:44 foxr
! 54: # Get switch parsing right.
! 55: #
1.4 foxr 56: # Revision 1.3 2003/08/12 10:22:35 foxr
57: # Put in parameter parsing infrastructure
58: #
1.3 foxr 59: # Revision 1.2 2003/08/12 09:58:49 foxr
60: # Add usage and skeleton documentation.
1.2 foxr 61: #
1.3 foxr 62: #
63: use Getopt::Long;
1.2 foxr 64:
1.3 foxr 65: sub Usage {
1.2 foxr 66: print "Usage:";
67: print <<USAGE;
1.3 foxr 68: lonManage --push=<tablename> newfile host
1.2 foxr 69: Push <tablename> to the lonTabs directory. Note that
70: <tablename> must be one of:
71: hosts (hosts.tab)
72: domain (domain.tab)
73:
1.3 foxr 74: lonManage --reinit=lonc host
1.2 foxr 75: Sends a HUP signal to the remote systems's lond.
76:
1.3 foxr 77: lonmanage --reinit=lond host
1.2 foxr 78: Requests the remote system's lond perform the same action as if
79: it had received a HUP signal.
80:
81: In the above syntax, the host above is the hosts.tab name of a host,
82: not the IP address of the host.
83: USAGE
84:
85:
86: }
87:
88: #
1.3 foxr 89: # Use Getopt::Long to parse the parameters of the program.
90: #
91: # Return value is a list consisting of:
92: # A 'command' which is one of:
93: # push - table push requested.
94: # reinit - reinit requested.
95: # Additional parameters as follows:
96: # for push: Tablename, hostname
97: # for reinit: Appname hostname
98: #
99: # This function does not validation of the parameters of push and
100: # reinit.
1.4 foxr 101: #
102: # returns a list. The first element of the list is the operation name
103: # (e.g. reinit or push). The second element is the switch parameter.
104: # for push, this is the table name, for reinit, this is the process name.
105: # Additional elements of the list are the command argument. The count of
106: # command arguments is validated, but not their semantics.
107: #
1.3 foxr 108: # returns an empty list if the parse fails.
109: #
110:
111: sub ParseArgs {
1.4 foxr 112: my $pushing = '';
113: my $reiniting = '';
1.5 ! foxr 114:
1.4 foxr 115: if(!GetOptions('push=s' => \$pushing,
116: 'reinit=s' => \$reinitting)) {
117: return ();
118: }
119:
120: # Require exactly one of --push and --reinit
121:
1.5 ! foxr 122: my $command = '';
1.4 foxr 123: my $commandarg = '';
1.5 ! foxr 124: my $paramcount = @ARGV; # Number of additional arguments.
! 125:
! 126:
1.4 foxr 127: if($pushing ne '') {
1.5 ! foxr 128:
! 129: # --push takes in addition a table, and a host:
! 130: #
! 131: if($paramcount != 2) {
! 132: print "Bad count $paramcount\n";
! 133: return (); # Invalid parameter count.
! 134: }
1.4 foxr 135: if($command ne '') {
136: return ();
137: } else {
1.5 ! foxr 138:
1.4 foxr 139: $command = 'push';
140: $commandarg = $pushing;
141: }
142: }
1.5 ! foxr 143:
1.4 foxr 144: if ($reinitting ne '') {
1.5 ! foxr 145:
! 146: # --reinit takes in addition just a host name
! 147:
! 148: if($paramcount != 1) {
! 149: print "Bad count $paramcount\n";
! 150: return ();
! 151: }
1.4 foxr 152: if($command ne '') {
153: return ();
154: } else {
155: $command = 'reinit';
156: $commandarg = $reinitting;
157: }
158: }
159:
1.5 ! foxr 160: # Build the result list:
! 161:
! 162: my @result = ($command, $commandarg);
! 163: my $i;
! 164: for($i = 0; $i < $paramcount; $i++) {
! 165: push(@result, $ARGV[$i]);
! 166: }
! 167:
! 168: return @result;
1.3 foxr 169: }
170:
171: #
1.2 foxr 172: # If command parsing failed, then print usage:
173:
1.4 foxr 174: @status = ParseArgs;
1.3 foxr 175: $nparam = @status;
176:
177: if($nparam == 0) {
1.2 foxr 178: Usage;
1.4 foxr 179: exit -1;
1.2 foxr 180: }
1.5 ! foxr 181:
! 182: print "---- params ---\n";
! 183: for($i = 0; $i < $nparam; $i++) {
! 184: print "Param[$i] = $status[$i]\n";
! 185: }
1.4 foxr 186:
187: exit 0;
1.2 foxr 188:
189: =head1 NAME
190: lonManage - Command line utility for remote management of lonCAPA
191: cluster nodes.
192:
193: =head1 SYNOPSIS
194:
195: Usage:
1.3 foxr 196: B<lonManage --push=<tablename> newfile host>
1.2 foxr 197: Push <tablename> to the lonTabs directory. Note that
198: <tablename> must be one of:
199: hosts (hosts.tab)
200: domain (domain.tab)
201:
1.3 foxr 202: B<lonManage --reinit=lonc host>
1.2 foxr 203: Sends a HUP signal to the remote systems's lond.
204:
1.3 foxr 205: B<lonmanage --reinit=lond host>
1.2 foxr 206: Requests the remote system's lond perform the same action as if
207: it had received a HUP signal.
208:
209: In the above syntax, the host above is the hosts.tab name of a host,
210: not the IP address of the host.
211:
212:
213: =head1 DESCRIPTION
214:
215: =head1 PREREQUISITES
1.3 foxr 216:
217: =item Getopt::Long
1.2 foxr 218:
219: =head1 CATEGORIES
220: Command line utility
221:
222: =cut
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>