#!/bin/sh # # useradd: map unix useradd syntax to our usermod script syntax # # Author: Silvan Scherrer # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # Synopsis # -------- # # This script mapps all needed parameters from useradd unix script to # our usermod script. Parameters unknown to usermod will be ignored. # # Usage # ----- # > useradd [-c username] [-d userhome] [-u UID] [-g GID|Group] [-r] # > [-s shell] user # # # Helpers quit() { exit $1 } print_usage() { print_version echo echo "Usage:" sed -n -e "s/useradd/${0##*/}/g" -e 's/^# > / /p' < "$0" quit 255 } print_version() { echo "useradd script version $version" echo "Copyright bww bitwise works GmbH" } # # Main. # version=0.1.0 # Parse command line. while [ -n "$1" ] ; do case "$1" in -c) prev_opt=name ;; -d) prev_opt=homedir ;; -g) prev_opt=gid ;; -r) system_account=yes ;; -s) prev_opt=shell ;; -u) prev_opt=uid ;; -v|-verbose|--verbose) verbose=yes ;; -h|-help|--help) help=yes ;; -V|-version|--version) show_version=yes ;; -*) unknown="$unknown$unknown_sep$1" unknown_sep=', ' ;; *) # If the previous option needs an argument, assign it. # else it's the user if [ -n "$prev_opt" ] ; then eval $prev_opt=\$1 prev_opt= else user=$1 fi ;; esac shift done if [ "$help" = "yes" -o "$user" = "" ] ; then show_version=no print_usage fi if [ "$show_version" = "yes" ] ; then print_version fi if [ "$verbose" = "yes" -a "$unknown" != "" ] ; then echo echo "unknown parameters: $unknown" echo fi # genarate the usermod parameters if [ "$verbose" = "yes" ] ; then echo echo "Parameter:" echo "----------" echo "user : $user" fi cmd="usermod -a \"$user\"" if [ -n "$name" ] ; then if [ "$verbose" = "yes" ] ; then echo "desc. : $name" fi cmd="$cmd -c \"$name\"" fi if [ -n "$shell" ] ; then if [ "$verbose" = "yes" ] ; then echo "shell : $shell" fi cmd="$cmd -s $shell" fi if [ -n "$homedir" ] ; then if [ "$verbose" = "yes" ] ; then echo "homedir: $homedir" fi cmd="$cmd -d $homedir" fi if [ -n "$gid" ] ; then if [ "$verbose" = "yes" ] ; then echo "gid : $gid" fi cmd="$cmd -g $gid" fi if [ -n "$uid" ] ; then if [ "$verbose" = "yes" ] ; then echo "uid : $uid" fi cmd="$cmd -u $uid" fi if [ "$verbose" = "yes" ] ; then echo "cmd: : $cmd" fi # in order to get " passed to REXX we need to go with cmd /c cmd /c "$cmd" quit 0