—#!/usr/bin/perl
#Copyright (c) 2009, Zane C. Bowers
#All rights reserved.
#
#Redistribution and use in source and binary forms, with or without modification,
#are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
#IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
#INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
#BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
#LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
#THE POSSIBILITY OF SUCH DAMAGE.
use
strict;
use
warnings;
use
Getopt::Std;
use
Plugtools;
$Getopt::Std::STANDARD_HELP_VERSION
= 1;
#version function
sub
main::VERSION_MESSAGE {
"plumod 0.1.0\n"
;
}
#print help
sub
main::HELP_MESSAGE {
"\n"
.
"-u <user> - The user to remove.\n"
.
"-a <action> - The action to perform.\n"
.
"-g <GID> - The GID to change the user to.\n"
.
"-U <UID> - The UID to change.\n"
.
"-c <GECOS> - The GECOS to set the user to.\n"
.
"-l - Print any changes to LDAP.\n"
.
"\n"
.
"actions:\n"
.
"gecos - Change the GECOS field for a user.\n"
.
"gid - Change the primary GID for a user.\n"
.
"uid - Change the UID for a user.\n"
.
"shell - Change the shell for a user.\n"
.
"\n"
.
"For more info, see the the perldocs for Plugtools and plurm...\n"
.
"perldoc plurm\n"
.
"perldoc Plugtools\n"
;
}
#gets the options
my
%opts
=();
getopts(
'u:a:g:U:c:ls:'
, \
%opts
);
if
(!
defined
(
$opts
{u})) {
warn
(
'plumod:254: No user name specified'
);
exit
254;
}
if
(!
defined
(
$opts
{u})) {
warn
(
'plumod:253: No action specified'
);
exit
253;
}
my
$pt
=Plugtools->new;
if
(
$pt
->{error}) {
warn
(
'plumod: Failed to initialize the Plugtools object'
);
exit
$pt
->{error};
}
if
(
$opts
{a} eq
'gecos'
) {
$pt
->userGECOSchange({
user
=>
$opts
{u},
gecos
=>
$opts
{c},
dump
=>
$opts
{l},
});
if
(
$pt
->{error}) {
warn
(
'plumod: Failed to modify the user'
);
exit
$pt
->{error};
}
}
if
(
$opts
{a} eq
'shell'
) {
$pt
->userShellChange({
user
=>
$opts
{u},
shell
=>
$opts
{s},
dump
=>
$opts
{l},
});
if
(
$pt
->{error}) {
warn
(
'plumod: Failed to modify the the user'
);
exit
$pt
->{error};
}
}
if
(
$opts
{a} eq
'gid'
) {
$pt
->userGIDchange({
user
=>
$opts
{u},
gid
=>
$opts
{g},
dump
=>
$opts
{l},
});
if
(
$pt
->{error}) {
warn
(
'plumod: Failed to modify the user'
);
exit
$pt
->{error};
}
}
if
(
$opts
{a} eq
'uid'
) {
$pt
->userGIDchange({
user
=>
$opts
{u},
uid
=>
$opts
{U},
dump
=>
$opts
{l},
});
if
(
$pt
->{error}) {
warn
(
'plumod: Failed to fail to modify the user'
);
exit
$pt
->{error};
}
}
exit
0;
=head1 NAME
plumod - Modify a user in LDAP.
=head1 SYNOPSIS
plumod B<-a> gecos B<-u> <user> B<-c> <gecos> [B<-l>]
plumod B<-a> gid B<-u> <user> B<-g> <GID> [B<-l>]
plumod B<-a> shell B<-u> <user> B<-s> <shell> [B<-l>]
plumod B<-a> uid B<-u> <user> B<-U> <UID> [B<-l>]
=head1 SWITCHES
=head2 -a <action>
The action to perfom.
=head3 actions
=head4 gecos
Change the GECOS for a user.
=head4 gid
Change the gid for a user.
=head4 shell
Change the shell for a user.
=head4 uid
Change the UID for a user.
=head2 -c <gecos>
Specifiy the new GECOS for a user.
=head2 -g <GID>
The new GID for a user.
=head2 -s <shell>
The new shell for a user.
=head2 -u <user>
This specifies the user to modify.
=head2 -U <UID>
The new UID for a user.
=head1 EXIT CODES
If the exit code is not listed below, it is what was the error code returned by Plugtools.
=head2 254
No user specified.
=head2 253
No action specified.
=head1 AUTHOR
Copyright (c) 2010, Zame C. Bowers <vvelox@vvelox.net>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
xFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS` OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=head1 SCRIPT CATEGORIES
UNIX : System_administration
=head1 OSNAMES
any
=head2 SEE ALSO
Plugtools
=head1 README
plumod - Modify a user in LDAP.
=cut