diff options
Diffstat (limited to 'sysutils/user_cygwin/files/userdel.sh')
-rwxr-xr-x | sysutils/user_cygwin/files/userdel.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/sysutils/user_cygwin/files/userdel.sh b/sysutils/user_cygwin/files/userdel.sh new file mode 100755 index 00000000000..444b6ae9a4c --- /dev/null +++ b/sysutils/user_cygwin/files/userdel.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# $NetBSD: userdel.sh,v 1.1 2013/03/06 12:37:16 obache Exp $ + +export PATH=/bin:$PATH + +show_usage () { + echo "usage: $0 [-rv] user" >&2 + exit 1 +} + +verbose=false +run_cmd () { + if $verbose; then printf '%s\n' "+ $*"; fi + "$@" +} + +remove_home_dir=false + +while getopts 'prv' f; do + case $f in + p) echo "$0: cannot yet lock out user with -p; aborting" >&2; exit 1;; + r) remove_home_dir=true;; + v) verbose=true;; + \?) show_usage;; + esac +done +shift $(($OPTIND - 1)) + +if [ $# -ne 1 ]; then show_usage; fi +$verbose || exec >/dev/null + +if ! net user $1 >/dev/null 2>&1; then + echo "$0: user $1 does not exist" >&2; exit 1 +fi + +if $remove_home_dir; then + home_dir="$(eval "echo ~$1")" + + case "$home_dir" in + /) echo "$0: user $1 has no home directory; ignoring remove request" >&2;; + /*/*) rm -rf "$home_dir";; + *) echo "$0: could not delete home directory '$home_dir'; aborting" >&2; exit 1;; + esac +fi + +run_cmd net user $1 /delete +/bin/sed -i -e "/^$1.*/d" /etc/passwd |