Annotation of loncom/lonManage, revision 1.4
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.4 ! foxr 6: # $Id: lonManage,v 1.3 2003/08/12 10:22:35 foxr Exp $
1.1 foxr 7: #
1.4 ! foxr 8: # $Id: lonManage,v 1.3 2003/08/12 10:22:35 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.4 ! foxr 53: # Revision 1.3 2003/08/12 10:22:35 foxr
! 54: # Put in parameter parsing infrastructure
! 55: #
1.3 foxr 56: # Revision 1.2 2003/08/12 09:58:49 foxr
57: # Add usage and skeleton documentation.
1.2 foxr 58: #
1.3 foxr 59: #
60: use Getopt::Long;
1.2 foxr 61:
1.3 foxr 62: sub Usage {
1.2 foxr 63: print "Usage:";
64: print <<USAGE;
1.3 foxr 65: lonManage --push=<tablename> newfile host
1.2 foxr 66: Push <tablename> to the lonTabs directory. Note that
67: <tablename> must be one of:
68: hosts (hosts.tab)
69: domain (domain.tab)
70:
1.3 foxr 71: lonManage --reinit=lonc host
1.2 foxr 72: Sends a HUP signal to the remote systems's lond.
73:
1.3 foxr 74: lonmanage --reinit=lond host
1.2 foxr 75: Requests the remote system's lond perform the same action as if
76: it had received a HUP signal.
77:
78: In the above syntax, the host above is the hosts.tab name of a host,
79: not the IP address of the host.
80: USAGE
81:
82:
83: }
84:
85: #
1.3 foxr 86: # Use Getopt::Long to parse the parameters of the program.
87: #
88: # Return value is a list consisting of:
89: # A 'command' which is one of:
90: # push - table push requested.
91: # reinit - reinit requested.
92: # Additional parameters as follows:
93: # for push: Tablename, hostname
94: # for reinit: Appname hostname
95: #
96: # This function does not validation of the parameters of push and
97: # reinit.
1.4 ! foxr 98: #
! 99: # returns a list. The first element of the list is the operation name
! 100: # (e.g. reinit or push). The second element is the switch parameter.
! 101: # for push, this is the table name, for reinit, this is the process name.
! 102: # Additional elements of the list are the command argument. The count of
! 103: # command arguments is validated, but not their semantics.
! 104: #
1.3 foxr 105: # returns an empty list if the parse fails.
106: #
107:
108: sub ParseArgs {
1.4 ! foxr 109: my $pushing = '';
! 110: my $reiniting = '';
! 111: if(!GetOptions('push=s' => \$pushing,
! 112: 'reinit=s' => \$reinitting)) {
! 113: return ();
! 114: }
! 115:
! 116: # Require exactly one of --push and --reinit
! 117:
! 118: my $command = '';
! 119: my $commandarg = '';
! 120: if($pushing ne '') {
! 121: if($command ne '') {
! 122: return ();
! 123: } else {
! 124: $command = 'push';
! 125: $commandarg = $pushing;
! 126: }
! 127: }
! 128: if ($reinitting ne '') {
! 129: if($command ne '') {
! 130: return ();
! 131: } else {
! 132: $command = 'reinit';
! 133: $commandarg = $reinitting;
! 134: }
! 135: }
! 136:
! 137: return ($command, $commandarg);
1.3 foxr 138: }
139:
140: #
1.2 foxr 141: # If command parsing failed, then print usage:
142:
1.4 ! foxr 143: @status = ParseArgs;
1.3 foxr 144: $nparam = @status;
145:
146: if($nparam == 0) {
1.2 foxr 147: Usage;
1.4 ! foxr 148: exit -1;
1.2 foxr 149: }
1.4 ! foxr 150: print "Will do a $status[0] : $status[1]\n";
! 151:
! 152: exit 0;
1.2 foxr 153:
154: =head1 NAME
155: lonManage - Command line utility for remote management of lonCAPA
156: cluster nodes.
157:
158: =head1 SYNOPSIS
159:
160: Usage:
1.3 foxr 161: B<lonManage --push=<tablename> newfile host>
1.2 foxr 162: Push <tablename> to the lonTabs directory. Note that
163: <tablename> must be one of:
164: hosts (hosts.tab)
165: domain (domain.tab)
166:
1.3 foxr 167: B<lonManage --reinit=lonc host>
1.2 foxr 168: Sends a HUP signal to the remote systems's lond.
169:
1.3 foxr 170: B<lonmanage --reinit=lond host>
1.2 foxr 171: Requests the remote system's lond perform the same action as if
172: it had received a HUP signal.
173:
174: In the above syntax, the host above is the hosts.tab name of a host,
175: not the IP address of the host.
176:
177:
178: =head1 DESCRIPTION
179:
180: =head1 PREREQUISITES
1.3 foxr 181:
182: =item Getopt::Long
1.2 foxr 183:
184: =head1 CATEGORIES
185: Command line utility
186:
187: =cut
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>