| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- #!/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@
- USERID=@nrpe_user@
- GRPID=@nrpe_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 $USERID user"
- echo " group Delete the $GRPID group"
- 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 ;;
- *) 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*@PKG_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*@PKG_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"
- }
- 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 $INIT_TYPE = upstart; then
- prt_msg 2 0 1 "($INIT_TYPE) initctl reload-configuration" && {
- initctl reload-configuration
- }
- 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 user ${USERID}"
- prt_msg 2 0 1 "Delete ${USERID}" || return
- if test ${OPSYS} = aix; then
- rmuser -p ${USERID}
- elif test ${OPSYS} = osx; then
- dscl . -delete /Groups/${GRPID} GroupMembership ${USERID}
- dscl . -delete /Users name ${USERID}
- elif test ${DIST} = "freebsd"; then
- pw del user ${USERID}
- else
- userdel -r ${USERID}
- fi
- }
- rm_group() {
- prt_msg 1 0 0 "*** Removing group ${GROUPID}"
- prt_msg 2 0 1 "Delete ${GROUPID}" || return
- if test ${OPSYS} = aix; then
- rmgroup -p ${GRPID}
- elif test ${OPSYS} = osx; then
- dscl . -delete /Groups/${GRPID}
- elif test ${DIST} = "freebsd"; then
- pw del group ${GRPID}
- else
- groupdel ${GRPID}
- fi
- }
- rm_script() {
- prt_msg 1 0 0 "*** Removing ${myname}"
- prt_msg 2 0 1 "Delete ${myname}" || return
- rm "${myname)"
- }
- 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 * * *"
|