418 lines
10 KiB
Bash
Executable File
418 lines
10 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Initialize variables
|
|
myname="$0"
|
|
quiet=0
|
|
prompt=0
|
|
verb=0
|
|
progs=0
|
|
config=0
|
|
start=0
|
|
delusr=0
|
|
delgrp=0
|
|
delscpt=0
|
|
force="-f"
|
|
redir=1
|
|
|
|
# Set file and path names
|
|
NAME=@PKG_NAME@
|
|
OPSYS=@opsys@
|
|
DIST=@dist_type@
|
|
SBINDIR=@sbindir@
|
|
LIBEXECDIR=@libexecdir@
|
|
PLUGINSDIR=@pluginsdir@
|
|
PIDDIR=@piddir@
|
|
CFGDIR=@pkgsysconfdir@
|
|
INIT_TYPE=@init_type@
|
|
INIT_DIR=@initdir@
|
|
INIT_FILE=@initname@
|
|
INETD_TYPE=@inetd_type@
|
|
INETD_DIR=@inetddir@
|
|
INETD_FILE=@inetdname@
|
|
SRC_INETD=@src_inetd@
|
|
SRC_INIT=@src_init@
|
|
NRPE_USER=@nrpe_user@
|
|
NRPE_GROUP=@nrpe_group@
|
|
NAGIOS_USER=@nagios_user@
|
|
NAGIOS_GROUP=@nagios_group@
|
|
|
|
|
|
# Display usage message
|
|
usage() {
|
|
echo "Usage: $0 [-q] [-p] [-v] progs|config|startup|user|group|script|all"
|
|
echo " Optional args:"
|
|
echo " -q Do not print what is happening"
|
|
echo " -p Prompt for each action"
|
|
echo " -v Be a little more verbose about what is happening"
|
|
echo " One or more of the following are required:"
|
|
echo " progs Delete the program files"
|
|
echo " config Delete configuration file(s)"
|
|
echo " startup Delete startup files (inetd, init, etc.)"
|
|
echo " user Delete the users"
|
|
echo " group Delete the groups"
|
|
echo " script Delete this uninstall script"
|
|
echo " all Do all of the above"
|
|
exit 1
|
|
}
|
|
|
|
get_opts() {
|
|
while test $# -gt 0 ; do
|
|
arg=$1
|
|
shift
|
|
case "$arg" in
|
|
-q) quiet=1 ;;
|
|
-p) prompt=1 ;;
|
|
progs) progs=1 ;;
|
|
config) config=1 ;;
|
|
startup) start=1 ;;
|
|
user) delusr=1; ;;
|
|
group) delgrp=1; ;;
|
|
script) delscpt=1; ;;
|
|
-v) verb=1; force=""; redir=0 ;;
|
|
all) progs=1; config=1; start=1; delusr=1; delgrp=1; delscpt=1 ;;
|
|
*) echo "Invalid argument: $arg"; usage ;;
|
|
esac
|
|
done
|
|
|
|
if test $prompt -eq 1 -a $quiet -eq 1 ; then
|
|
echo "The -p and -q flags are mutually exclusive"
|
|
echo Please specify one or the other
|
|
exit 1
|
|
fi
|
|
if test $verb -eq 1 -a $quiet -eq 1 ; then
|
|
echo "The -v and -q flags are mutually exclusive"
|
|
echo Please specify one or the other
|
|
exit 1
|
|
fi
|
|
if test $progs -eq 0 -a $config -eq 0 -a $start -eq 0 ; then
|
|
usage
|
|
fi
|
|
}
|
|
|
|
prt_msg() {
|
|
if test $quiet -eq 1 ; then
|
|
return 0
|
|
fi
|
|
|
|
case $1 in
|
|
0) indent="" ;;
|
|
1) indent=" " ;;
|
|
2) indent=" " ;;
|
|
*) indent="" ;;
|
|
esac
|
|
shift
|
|
|
|
if test $1 -eq 1 -a $verb -eq 0 -a $prompt -eq 0 ; then
|
|
return 0
|
|
fi
|
|
shift
|
|
|
|
if test $1 -eq 1 -a $prompt -eq 1 ; then
|
|
shift
|
|
echo -n "${indent}$*"
|
|
echo -n "? [Y|n] "
|
|
read yn
|
|
if test "x$yn" = x -o x$yn = xy -o x$yn = xY ; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
shift
|
|
echo "${indent}$*"
|
|
return 0
|
|
}
|
|
|
|
rm_progs() {
|
|
num=0
|
|
prt_msg 1 0 0 "*** Uninstalling Progs"
|
|
|
|
if test -f "$PLUGINSDIR/check_nrpe" ; then
|
|
num=1
|
|
prt_msg 2 0 1 "Delete $PLUGINSDIR/check_nrpe" && {
|
|
rm $force "$PLUGINSDIR/check_nrpe"
|
|
prt_msg 2 1 0 "Remove directory $PLUGINSDIR"
|
|
if test $redir -eq 1; then
|
|
rmdir "$PLUGINSDIR" 2>/dev/null
|
|
else
|
|
rmdir "$PLUGINSDIR"
|
|
fi
|
|
prt_msg 2 1 0 "Remove directory $LIBEXECDIR"
|
|
if test $redir -eq 1; then
|
|
rmdir "$LIBEXECDIR" 2>/dev/null
|
|
else
|
|
rmdir "$LIBEXECDIR"
|
|
fi
|
|
}
|
|
fi
|
|
|
|
if test -f "$SBINDIR/$NAME" ; then
|
|
num=1
|
|
prt_msg 2 0 1 "Delete $SBINDIR/$NAME" && {
|
|
rm $force "$SBINDIR/$NAME"
|
|
}
|
|
fi
|
|
|
|
if test -d "$PIDDIR" ; then
|
|
num=1
|
|
prt_msg 2 0 1 "Remove directory $PIDDIR" && {
|
|
if test $redir -eq 1; then
|
|
rmdir "$PIDDIR" 2>/dev/null
|
|
else
|
|
rmdir "$PIDDIR"
|
|
fi
|
|
}
|
|
fi
|
|
|
|
if test $num -eq 0; then
|
|
prt_msg 2 0 0 "There was nothing to uninstall"
|
|
fi
|
|
}
|
|
|
|
rm_startup() {
|
|
num=0
|
|
prt_msg 1 0 0 "*** Uninstalling Startup"
|
|
|
|
if test "$SRC_INETD" != unknown; then
|
|
if test "$INETD_TYPE" = inetd; then
|
|
rc=`grep -E -q "^\W*$NAME\s+" "$INETD_DIR/$INETD_FILE"`
|
|
if test $rc -eq 0; then
|
|
num=1
|
|
prt_msg 2 0 1 "($INETD_TYPE) Remove entries from $INETD_DIR/$INETD_FILE" && {
|
|
prt_msg 2 1 0 "($INETD_TYPE) Creating temp file: $INETD_DIR/$INETD_FILE.$NAME.unin"
|
|
grep -v -q "\W*$NAME\s+" "$INETD_DIR/$INETD_FILE" > "$INETD_DIR/$INETD_FILE.$NAME.unin"
|
|
prt_msg 2 1 0 "($INETD_TYPE) Renaming original to: $INETD_DIR/$INETD_FILE.$NAME_save"
|
|
mv "$INETD_DIR/$INETD_FILE" "$INETD_DIR/$INETD_FILE.$NAME_save"
|
|
prt_msg 2 1 0 "($INETD_TYPE) Renaming $INETD_DIR/$INETD_FILE.unin to $INETD_DIR/$INETD_FILE"
|
|
mv "$INETD_DIR/$INETD_FILE.unin" "$INETD_DIR/$INETD_FILE"
|
|
prt_msg 2 0 0 "($INETD_TYPE) Old $INETD_DIR/$INETD_FILE saved as $INETD_DIR/$INETD_FILE.$NAME_save"
|
|
}
|
|
fi
|
|
elif test -f "$INETD_DIR/$INETD_FILE"; then
|
|
num=1
|
|
if test "$INETD_TYPE" != xinetd; then
|
|
prt_msg 2 0 1 "($INETD_TYPE) Stop and disable $NAME)" && {
|
|
case "$INETD_TYPE" in
|
|
systemd)
|
|
systemctl stop $NAME; systemctl disable $NAME
|
|
;;
|
|
upstart)
|
|
if test $verb -eq 1; then
|
|
stop $NAME
|
|
else
|
|
stop $NAME >/dev/null 2>&1
|
|
fi
|
|
;;
|
|
launchd)
|
|
launchctl unload $INETD_FILE; launchctl remove $INETD_FILE;
|
|
;;
|
|
smf*)
|
|
svcadm disable -s $NAME
|
|
;;
|
|
esac
|
|
}
|
|
fi
|
|
prt_msg 2 0 1 "($INETD_TYPE) Delete $INETD_DIR/$INETD_FILE" && {
|
|
rm $force "$INETD_DIR/$INETD_FILE"
|
|
if test "$INETD_TYPE" = systemd; then
|
|
INETD_FILE=`echo "$INETD_FILE" | sed -e 's/socket$/service/'`
|
|
prt_msg 2 0 1 "($INETD_TYPE) Delete $INETD_DIR/$INETD_FILE" && {
|
|
rm $force "$INETD_DIR/$INETD_FILE"
|
|
}
|
|
elif test "$INETD_TYPE" = smf10 -o "$INETD_TYPE" = smf11; then
|
|
prt_msg 2 0 1 "($INIT_TYPE) svcadm restart svc:/system/manifest-import" && {
|
|
svcadm restart svc:/system/manifest-import
|
|
}
|
|
fi
|
|
}
|
|
fi
|
|
fi
|
|
|
|
if test "$SRC_INIT" != unknown; then
|
|
if test -f "$INIT_DIR/$INIT_FILE"; then
|
|
num=1
|
|
prt_msg 2 0 1 "($INIT_TYPE) Stop and disable $NAME" && {
|
|
case "$INIT_TYPE" in
|
|
systemd)
|
|
systemctl stop $NAME; systemctl disable $NAME
|
|
;;
|
|
upstart)
|
|
if test $verb -eq 1; then
|
|
stop $NAME
|
|
else
|
|
stop $NAME >/dev/null 2>&1
|
|
fi
|
|
;;
|
|
launchd)
|
|
launchctl unload $INIT_FILE; launchctl remove $INIT_FILE;
|
|
;;
|
|
*bsd)
|
|
if test -x $INIT_DIR/$INIT_FILE ; then
|
|
$INIT_DIR/$INIT_FILE stop
|
|
fi
|
|
chmod 0644 $INIT_DIR/$INIT_FILE
|
|
;;
|
|
openrc|gentoo)
|
|
/sbin/start-stop-daemon --stop $NAME
|
|
/sbin/rc-update del $NAME
|
|
;;
|
|
smf*)
|
|
svcadm disable -s $NAME
|
|
;;
|
|
sysv)
|
|
service stop $NAME; chkconfig --del $NAME
|
|
;;
|
|
esac
|
|
}
|
|
prt_msg 2 0 1 "($INIT_TYPE) Delete $INIT_DIR/$INIT_FILE" && {
|
|
rm $force "$INIT_DIR/$INIT_FILE"
|
|
if test ${OPSYS} = bsd; then
|
|
prt_msg 2 0 1 "($INITD_TYPE) Remove entries from $INETD_DIR/rc.conf" && {
|
|
prt_msg 2 1 0 "($INIT_TYPE) Creating temp file: $INETD_DIR/rc.conf.$NAME.unin"
|
|
grep -v -q "^$NAME" "$INETD_DIR/rc.conf" > "$INETD_DIR/rc.conf.$NAME.unin"
|
|
prt_msg 2 1 0 "($INIT_TYPE) Renaming original to: $INETD_DIR/rc.conf.$NAME_save"
|
|
mv "$INETD_DIR/rc.conf" "$INETD_DIR/rc.conf.$NAME_save"
|
|
prt_msg 2 1 0 "($INIT_TYPE) Renaming $INETD_DIR/rc.conf.unin to $INETD_DIR/rc.conf"
|
|
mv "$INETD_DIR/rc.conf.unin" "$INETD_DIR/rc.conf"
|
|
prt_msg 2 0 0 "($INIT_TYPE) Old $INETD_DIR/rc.conf saved as $INETD_DIR/rc.conf.$NAME_save"
|
|
}
|
|
fi
|
|
if test $INIT_TYPE = upstart; then
|
|
prt_msg 2 0 1 "($INIT_TYPE) initctl reload-configuration" && {
|
|
initctl reload-configuration
|
|
}
|
|
elif test "$INIT_TYPE" = smf10 -o "$INIT_TYPE" = smf11; then
|
|
prt_msg 2 0 1 "($INIT_TYPE) svcadm restart svc:/system/manifest-import" && {
|
|
svcadm restart svc:/system/manifest-import
|
|
}
|
|
fi
|
|
}
|
|
fi
|
|
fi
|
|
|
|
if test $num -eq 0; then
|
|
prt_msg 2 0 0 "There was nothing to uninstall"
|
|
fi
|
|
}
|
|
|
|
rm_config() {
|
|
num=0
|
|
prt_msg 1 0 0 "*** Uninstalling Config"
|
|
|
|
if test -f "$CFGDIR/$NAME.cfg"; then
|
|
num=1
|
|
prt_msg 2 0 1 "Delete $CFGDIR/$NAME.cfg" || return
|
|
rm $force "$CFGDIR/$NAME.cfg"
|
|
prt_msg 2 1 0 "Removing directory $CFGDIR"
|
|
if test $redir -eq 1; then
|
|
rmdir "$CFGDIR" 2>/dev/null
|
|
else
|
|
rmdir "$CFGDIR"
|
|
fi
|
|
fi
|
|
|
|
if test $num -eq 0; then
|
|
prt_msg 2 0 0 "There was nothing to uninstall"
|
|
fi
|
|
}
|
|
|
|
rm_user() {
|
|
prt_msg 1 0 0 "*** Removing users"
|
|
prt_msg 2 0 1 "Delete nrpe user:${NRPE_USER} and nagios user:${NAGIOS_USER}" || return
|
|
|
|
if test ${OPSYS} = aix; then
|
|
if test $redir -eq 1; then
|
|
rmuser -p ${NRPE_USER} 2>/dev/null
|
|
rmuser -p ${NAGIOS_USER} 2>/dev/null
|
|
else
|
|
rmuser -p ${NRPE_USER}
|
|
rmuser -p ${NAGIOS_USER}
|
|
fi
|
|
elif test ${OPSYS} = osx; then
|
|
dscl . -delete /Groups/${NRPE_GROUP} GroupMembership ${NRPE_USER}
|
|
dscl . -delete /Users name ${NRPE_USER}
|
|
dscl . -delete /Groups/${NAGIOS_GROUP} GroupMembership ${NAGIOS_USER}
|
|
dscl . -delete /Users name ${NAGIOS_USER}
|
|
elif test ${DIST} = "freebsd"; then
|
|
if test $redir -eq 1; then
|
|
pw del user ${NRPE_USER} 2>/dev/null
|
|
pw del user ${NAGIOS_USER} 2>/dev/null
|
|
else
|
|
pw del user ${NRPE_USER}
|
|
pw del user ${NAGIOS_USER}
|
|
fi
|
|
else
|
|
if test $redir -eq 1; then
|
|
userdel -r ${NRPE_USER} 2>/dev/null
|
|
userdel -r ${NAGIOS_USER} 2>/dev/null
|
|
else
|
|
userdel -r ${NRPE_USER}
|
|
userdel -r ${NAGIOS_USER}
|
|
fi
|
|
fi
|
|
}
|
|
|
|
rm_group() {
|
|
prt_msg 1 0 0 "*** Removing groups"
|
|
prt_msg 2 0 1 "Delete nrpe group:${NRPE_GROUP} and nagios group:${NAGIOS_GROUP}" || return
|
|
|
|
if test ${OPSYS} = aix; then
|
|
if test $redir -eq 1; then
|
|
rmgroup -p ${NRPE_GROUP} 2>/dev/null
|
|
rmgroup -p ${NAGIOS_GROUP} 2>/dev/null
|
|
else
|
|
rmgroup -p ${NRPE_GROUP}
|
|
rmgroup -p ${NAGIOS_GROUP}
|
|
fi
|
|
elif test ${OPSYS} = osx; then
|
|
if test $redir -eq 1; then
|
|
dscl . -delete /Groups/${NRPE_GROUP} 2>/dev/null
|
|
dscl . -delete /Groups/${NAGIOS_GROUP} 2>/dev/null
|
|
else
|
|
dscl . -delete /Groups/${NRPE_GROUP}
|
|
dscl . -delete /Groups/${NAGIOS_GROUP}
|
|
fi
|
|
elif test ${DIST} = "freebsd"; then
|
|
if test $redir -eq 1; then
|
|
pw del group ${NRPE_GROUP} 2>/dev/null
|
|
pw del group ${NAGIOS_GROUP} 2>/dev/null
|
|
else
|
|
pw del group ${NRPE_GROUP}
|
|
pw del group ${NAGIOS_GROUP}
|
|
fi
|
|
else
|
|
if test $redir -eq 1; then
|
|
groupdel ${NRPE_GROUP} 2>/dev/null
|
|
groupdel ${NAGIOS_GROUP} 2>/dev/null
|
|
else
|
|
groupdel ${NRPE_GROUP}
|
|
groupdel ${NAGIOS_GROUP}
|
|
fi
|
|
fi
|
|
}
|
|
|
|
rm_script() {
|
|
prt_msg 1 0 0 "*** Removing ${myname}"
|
|
prt_msg 2 0 1 "Delete ${myname}" || return
|
|
|
|
if test $redir -eq 1; then
|
|
rm "${myname}" 2>/dev/null
|
|
else
|
|
rm "${myname}"
|
|
fi
|
|
}
|
|
|
|
get_opts $@
|
|
|
|
prt_msg 0 0 0 "* * * Uninstall Starting * * *"
|
|
|
|
if test $progs -eq 1 ; then rm_progs; fi
|
|
if test $start -eq 1 ; then rm_startup; fi
|
|
if test $config -eq 1 ; then rm_config; fi
|
|
if test $delusr -eq 1; then rm_user; fi
|
|
if test $delgrp -eq 1; then rm_group; fi
|
|
if test $delscpt -eq 1; then rm_script; fi
|
|
|
|
prt_msg 0 0 0 "* * * Uninstall Complete * * *"
|