summaryrefslogtreecommitdiffstats
path: root/uninstall.in
diff options
context:
space:
mode:
Diffstat (limited to 'uninstall.in')
-rwxr-xr-xuninstall.in417
1 files changed, 417 insertions, 0 deletions
diff --git a/uninstall.in b/uninstall.in
new file mode 100755
index 0000000..0087c11
--- /dev/null
+++ b/uninstall.in
@@ -0,0 +1,417 @@
+#!/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 * * *"