C プロビジョニング用のデフォルト属性の更新のサンプル・スクリプト

この付録では、プロビジョニング用にデフォルトの属性マッピングを編集するサンプル・スクリプトを示します。

「スキーマ属性を編集した後のプロビジョニング用スクリプトの更新」で説明する手順のサンプル・スクリプトは、次のとおりです。

C.1 元のサンプル・スクリプト

これが、元のCreateNativeUser.txtスクリプトです。

if [ ! -z "$__UID__" ] ;then
    __NAME__=$__UID__;
else
    __NAME__=$__NAME__;
fi;
if id $__NAME__ > /dev/null 2>&1 ;then 
    echo "User already exists";
else 
    globalVar="true";
    if [ ! -z $SECONDARYGROUP ] ;then 
        command="$command -G $SECONDARYGROUP";
    fi;
 
    homedir="";
    if [ ! -z $HOME_DIR ] ;then 
        homedir=$HOME_DIR;
    else 
        if [ ! -z $defaultHomeBaseDir ] ;then 
            homedir=$defaultHomeBaseDir;
        fi;
    fi;
    if [ ! -z $homedir ] ;then 
        checkHomeBaseDir=$(test -d $homedir && echo "true" || echo "false");
        if [ $checkHomeBaseDir == "true" ]; then 
            command="$command -d $homedir/$__NAME__";
        else 
            globalVar="false";
            echo "useradd: cannot create directory $homedir/$__NAME__";
        fi;
    fi;
    if [ ! -z $EXP_DATE ] ;then 
        command="$command -e $EXP_DATE";
    fi;
    if [ ! -z $INACTIVE ] ;then 
        command="$command -f $INACTIVE";
    fi;
    if [ ! -z $PGROUP ] ;then 
        grp=$PGROUP;
    else 
        if [ ! -z $defaultPriGroup ] ;then 
            grp=$defaultPriGroup;
        fi;
    fi;
    if [ ! -z $grp ] ;then 
        getent group $grp;
        if [ $? -ne 0 ] ;then 
            echo "PGROUP=$grp";
            echo "Invalid primary group :- $grp";
            globalVar="false";
        else 
            command="$command -g $grp";
        fi;
    fi;
    if [ ! -z $CREATE_HOME_DIR ] && [  $CREATE_HOME_DIR == "true" ] ;then 
        command="$command -m";
            if [ ! -z $SKEL_DIR ] ;then 
                command="$command -k $SKEL_DIR";
            fi;
    fi;
    if [ ! -z $CREATE_USER_GROUP ] && [  $CREATE_USER_GROUP == "false" ] ;then 
        command="$command -n";
    fi;
    if [ ! -z $USER_SHELL ] ;then 
        command="$command -s $USER_SHELL";
    else 
        if [ ! -z $defaultShell ] ;then 
            command="$command -s $defaultShell";
        fi;
    fi;
    if [ ! -z $USID ] && [  $USID -gt 0 ] ;then 
        command="$command -u $USID";
        if [ ! -z $UNIQUE_USID ] && [  $UNIQUE_USID == "false" ] ;then 
            command="$command -o";
        fi;
    fi;
    if [ $globalVar == "true" ] ;then 
        echo "useradd $command $__NAME__";
        useradd $command $__NAME__;
        if [ $? -eq 0 ]; then echo "SUCCESS";
            if [ ! -z "$COMMENTS" ] ; then echo "usermod -c \""$COMMENTS"\" $__NAME__";
                usermod -c "$COMMENTS" $__NAME__; 
            fi;
        fi;
    fi;
fi;
unset bar COMMENTS HOME_DIR PGROUP grp EXP_DATE SKEL_DIR UNIQUE_USID __NAME__ __UID__ CREATE_HOME_DIR;
unset USER_SHELL USID CREATE_USER_GROUP INACTIVE SECONDARYGROUP command globalVar name;
unset defaultHomeBaseDir homedir checkHomeBaseDir grp defaultPriGroup;

C.2 更新されたサンプル・スクリプト

これが、新しく追加された__GID__属性を含むように更新されたCreateNativeUser.txtスクリプトです。更新された行は太字フォントで示されています。

if [ ! -z "$__UID__" ] ;then
    __NAME__=$__UID__;
else
    __NAME__=$__NAME__;
fi;
if id $__NAME__ > /dev/null 2>&1 ;then 
    echo "User already exists";
else 
    globalVar="true";
    if [ ! -z $SECONDARYGROUP ] ;then 
        command="$command -G $SECONDARYGROUP";
    fi;
 
    homedir="";
    if [ ! -z $HOME_DIR ] ;then 
        homedir=$HOME_DIR;
    else 
        if [ ! -z $defaultHomeBaseDir ] ;then 
            homedir=$defaultHomeBaseDir;
        fi;
    fi;
    if [ ! -z $homedir ] ;then 
        checkHomeBaseDir=$(test -d $homedir && echo "true" || echo "false");
        if [ $checkHomeBaseDir == "true" ]; then 
            command="$command -d $homedir/$__NAME__";
        else 
            globalVar="false";
            echo "useradd: cannot create directory $homedir/$__NAME__";
        fi;
    fi;
    if [ ! -z $EXP_DATE ] ;then 
        command="$command -e $EXP_DATE";
    fi;
    if [ ! -z $INACTIVE ] ;then 
        command="$command -f $INACTIVE";
    fi;
    if [ ! -z $PGROUP ] ;then 
        grp=$PGROUP;
    else 
        if [ ! -z $defaultPriGroup ] ;then 
            grp=$defaultPriGroup;
        fi;
    fi;
    if [ ! -z $grp ] ;then 
        getent group $grp;
        if [ $? -ne 0 ] ;then 
            echo "PGROUP=$grp";
            echo "Invalid primary group :- $grp";
            globalVar="false";
        else 
            command="$command -g $grp";
        fi;
    fi;
    if [ ! -z $CREATE_HOME_DIR ] && [  $CREATE_HOME_DIR == "true" ] ;then 
        command="$command -m";
            if [ ! -z $SKEL_DIR ] ;then 
                command="$command -k $SKEL_DIR";
            fi;
    fi;
    if [ ! -z $CREATE_USER_GROUP ] && [  $CREATE_USER_GROUP == "false" ] ;then 
        command="$command -n";
    fi;
    if [ ! -z $USER_SHELL ] ;then 
        command="$command -s $USER_SHELL";
    else 
        if [ ! -z $defaultShell ] ;then 
            command="$command -s $defaultShell";
        fi;
    fi;
    if [ ! -z $USID ] && [  $USID -gt 0 ] ;then 
        command="$command -u $USID";
        if [ ! -z $UNIQUE_USID ] && [  $UNIQUE_USID == "false" ] ;then 
            command="$command -o";
        fi;
    fi;
    if [ ! -z $__GID__ ] ;then 
        command="$command -g $__GID__";
    fi;
    if [ $globalVar == "true" ] ;then 
        echo "useradd $command $__NAME__";
        useradd $command $__NAME__;
        if [ $? -eq 0 ]; then echo "SUCCESS";
            if [ ! -z "$COMMENTS" ] ; then echo "usermod -c \""$COMMENTS"\" $__NAME__";
                usermod -c "$COMMENTS" $__NAME__; 
            fi;
        fi;
    fi;
fi;
unset bar COMMENTS HOME_DIR PGROUP grp EXP_DATE SKEL_DIR UNIQUE_USID __NAME__ __UID__ CREATE_HOME_DIR;
unset USER_SHELL USID CREATE_USER_GROUP INACTIVE SECONDARYGROUP command globalVar name;
unset defaultHomeBaseDir homedir checkHomeBaseDir grp defaultPriGroup __GID__;