version 1.6, 2003/08/12 11:02:59
|
version 1.7, 2003/08/18 09:56:01
|
Line 50
|
Line 50
|
# not the IP address of the host. |
# not the IP address of the host. |
# |
# |
# $Log$ |
# $Log$ |
|
# Revision 1.7 2003/08/18 09:56:01 foxr |
|
# 1. Require to be run as root. |
|
# 2. Catch case where no operation switch is supplied and put out usage. |
|
# 3. skeleton/comments for PushFile function. |
|
# |
# Revision 1.6 2003/08/12 11:02:59 foxr |
# Revision 1.6 2003/08/12 11:02:59 foxr |
# Implement command switch dispatching. |
# Implement command switch dispatching. |
# |
# |
Line 66
|
Line 71
|
# Add usage and skeleton documentation. |
# Add usage and skeleton documentation. |
# |
# |
# |
# |
|
use strict; # Because it's good practice. |
|
use English; # Cause I like meaningful names. |
use Getopt::Long; |
use Getopt::Long; |
|
|
sub Usage { |
sub Usage { |
Line 80 sub Usage {
|
Line 87 sub Usage {
|
lonManage --reinit=lonc host |
lonManage --reinit=lonc host |
Sends a HUP signal to the remote systems's lond. |
Sends a HUP signal to the remote systems's lond. |
|
|
lonmanage --reinit=lond host |
lonManage --reinit=lond host |
Requests the remote system's lond perform the same action as if |
Requests the remote system's lond perform the same action as if |
it had received a HUP signal. |
it had received a HUP signal. |
|
|
Line 116 USAGE
|
Line 123 USAGE
|
|
|
sub ParseArgs { |
sub ParseArgs { |
my $pushing = ''; |
my $pushing = ''; |
my $reiniting = ''; |
my $reinitting = ''; |
|
|
if(!GetOptions('push=s' => \$pushing, |
if(!GetOptions('push=s' => \$pushing, |
'reinit=s' => \$reinitting)) { |
'reinit=s' => \$reinitting)) { |
Line 171 sub ParseArgs {
|
Line 178 sub ParseArgs {
|
|
|
return @result; |
return @result; |
} |
} |
|
# |
|
# Called to push a file to the remote system. |
|
# The only legal files to push are hosts.tab and domain.tab. |
|
# Security is somewhat improved by |
|
# |
|
# - Requiring the user run as root. |
|
# - Connecting with lonc rather than lond directly ensuring this is a loncapa |
|
# host |
|
# - We must appear in the remote host's hosts.tab file. |
|
# - The host must appear in our hosts.tab file. |
|
# |
|
# Parameters: |
|
# tablename - must be one of hosts or domain. |
|
# tablefile - name of the file containing the table to push. |
|
# host - name of the host to push this file to. |
|
# |
|
sub PushFile { |
|
my $tablename = shift; |
|
my $tablefile = shift; |
|
my $host = shift; |
|
|
|
} |
|
|
|
sub ReinitProcess { |
|
print "Reinitializing a process\n"; |
|
} |
#--------------------------- Entry point: -------------------------- |
#--------------------------- Entry point: -------------------------- |
|
|
# Parse the parameters |
# Parse the parameters |
# If command parsing failed, then print usage: |
# If command parsing failed, then print usage: |
|
|
@params = ParseArgs; |
my @params = ParseArgs; |
$nparam = @params; |
my $nparam = @params; |
|
|
if($nparam == 0) { |
if($nparam == 0) { |
Usage; |
Usage; |
exit -1; |
exit -1; |
} |
} |
|
# |
|
# Next, ensure we are running as EID root. |
sub PushFile { |
# |
print "Pushing a file\n"; |
if ($EUID != 0) { |
|
die "ENOPRIV - No privilege for requested operation" |
} |
} |
|
|
sub ReinitProcess { |
|
print "Reinitializing a process\n"; |
|
} |
|
|
|
# Based on the operation requested invoke the appropriate function: |
# Based on the operation requested invoke the appropriate function: |
|
|
$operation = shift @params; |
my $operation = shift @params; |
|
|
if($operation eq "push") { # push tablename filename host |
if($operation eq "push") { # push tablename filename host |
$tablename = shift @params; |
my $tablename = shift @params; |
$tablefile = shift @params; |
my $tablefile = shift @params; |
$host = shift @params; |
my $host = shift @params; |
PushFile($tablename, $tablefile, $host); |
PushFile($tablename, $tablefile, $host); |
|
|
} |
} elsif($operation eq "reinit") { # reinit processname host. |
if($operation eq "reinit") { # reinit processname host. |
my $process = shift @params; |
$process = shift @params; |
my $host = shift @params; |
$host = shift @params; |
|
ReinitProcess($process, $host); |
ReinitProcess($process, $host); |
} |
} |
|
else { |
|
Usage; |
|
} |
exit 0; |
exit 0; |
|
|
=head1 NAME |
=head1 NAME |
Line 240 Usage:
|
Line 272 Usage:
|
|
|
=head1 PREREQUISITES |
=head1 PREREQUISITES |
|
|
|
=item strict |
=item Getopt::Long |
=item Getopt::Long |
|
=item English |
|
|
=head1 CATEGORIES |
=head1 CATEGORIES |
Command line utility |
Command line utility |