B リコンシリエーション用のデフォルト属性の更新のサンプル・スクリプト

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

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

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

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

while read inputline ;do
    __NAME__=$(echo $inputline | cut -d: -f1);
    USID=$(echo $inputline | cut -d: -f3);
    COMMENTS=$(echo $inputline | cut -d: -f5);
    HOME_DIR=$(echo $inputline | cut -d: -f6);
    CREATE_HOME_DIR="false";
    if [ -d "$HOME_DIR" ] ;then CREATE_HOME_DIR="true";fi;
    USER_SHELL=$(echo $inputline | cut -d: -f7);
    PGROUP=$( id -G -n $__NAME__ | cut -d' ' -f1);
    shadowRecord=$(cat /etc/shadow |grep $__NAME__);  
    INACTIVE=$(echo $shadowRecord | cut -d: -f7);
    EXP_DATE=$(echo $shadowRecord | cut -d: -f8);
    secgrplist="";
    id -G -n $__NAME__ | grep -q " ";
    if [ $? -eq 0 ];then 
        secgrplist=$( id -G -n $__NAME__ | cut -d ' ' -f2- | sed 's/ /~~~/g');
    fi;
    ENABLE="true";
    if [ ! -z "$__NAME__" ] ;then
        passwd -S $__NAME__ | grep -w LK >/dev/null;
         if [ $? -eq 0 ] ;then
            ENABLE="false";
         fi;
         passwd -S $__NAME__ | grep -w locked >/dev/null;
         if [ $? -eq 0 ] ;then
            ENABLE="false";
         fi;
    fi;
    RESULT1=__NAME__:$__NAME__:__ENABLE__:$ENABLE:COMMENTS:$COMMENTS:USID:$USID:USER_SHELL:$USER_SHELL:HOME_DIR:$HOME_DIR:;
        RESULT2=CREATE_HOME_DIR:$CREATE_HOME_DIR:SECONDARYGROUP:$secgrplist:;
        RESULT3=PGROUP:$PGROUP:INACTIVE:$INACTIVE:EXP_DATE:$EXP_DATE:__UID__:$__NAME__;
        RESULT="$RESULT1$RESULT2$RESULT3";
    echo "$RESULT" | grep -q -w "$connectorPrompt";
    if [ $? -gt 0 ];then 
        echo "RESULT_START $RESULT RESULT_END";
    else 
        echo "Record contains connector prompt. Hence ignored";
    fi;
done < /etc/passwd;[ $? -eq 0 ] && echo "SUCCESS";
unset inputline __NAME__ USID COMMENTS HOME_DIR USER_SHELL PGROUP secgrplist;
unset ENABLE passwordFull passwordF passwordS RESULT RESULT1 RESULT2 RESULT3 __UID__ INACTIVE EXP_DATE shadowRecord;

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

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

while read inputline ;do
    __NAME__=$(echo $inputline | cut -d: -f1);
    USID=$(echo $inputline | cut -d: -f3);
    COMMENTS=$(echo $inputline | cut -d: -f5);
    HOME_DIR=$(echo $inputline | cut -d: -f6);
    CREATE_HOME_DIR="false";
    if [ -d "$HOME_DIR" ] ;then CREATE_HOME_DIR="true";fi;
    USER_SHELL=$(echo $inputline | cut -d: -f7);
    PGROUP=$( id -G -n $__NAME__ | cut -d' ' -f1);
    __GID__=$( id -G $__NAME__ | cut -d' ' -f1);
    shadowRecord=$(cat /etc/shadow |grep $__NAME__);  
    INACTIVE=$(echo $shadowRecord | cut -d: -f7);
    EXP_DATE=$(echo $shadowRecord | cut -d: -f8);
    secgrplist="";
    id -G -n $__NAME__ | grep -q " ";
    if [ $? -eq 0 ];then 
        secgrplist=$( id -G -n $__NAME__ | cut -d ' ' -f2- | sed 's/ /~~~/g');
    fi;
    ENABLE="true";
    if [ ! -z "$__NAME__" ] ;then
        passwd -S $__NAME__ | grep -w LK >/dev/null;
         if [ $? -eq 0 ] ;then
            ENABLE="false";
         fi;
         passwd -S $__NAME__ | grep -w locked >/dev/null;
         if [ $? -eq 0 ] ;then
            ENABLE="false";
         fi;
    fi;
    RESULT1=__NAME__:$__NAME__:__ENABLE__:$ENABLE:COMMENTS:$COMMENTS:USID:$USID:USER_SHELL:$USER_SHELL:HOME_DIR:$HOME_DIR:;
        RESULT2=CREATE_HOME_DIR:$CREATE_HOME_DIR:SECONDARYGROUP:$secgrplist:;
        RESULT3=PGROUP:$PGROUP:INACTIVE:$INACTIVE:EXP_DATE:$EXP_DATE:__UID__:$__NAME__:__GID__:$__GID__;
        RESULT="$RESULT1$RESULT2$RESULT3";
    echo "$RESULT" | grep -q -w "$connectorPrompt";
    if [ $? -gt 0 ];then 
        echo "RESULT_START $RESULT RESULT_END";
    else 
        echo "Record contains connector prompt. Hence ignored";
    fi;
done < /etc/passwd;[ $? -eq 0 ] && echo "SUCCESS";
unset inputline __NAME__ USID COMMENTS HOME_DIR USER_SHELL PGROUP secgrplist __GID__;
unset ENABLE passwordFull passwordF passwordS RESULT RESULT1 RESULT2 RESULT3 __UID__ INACTIVE EXP_DATE shadowRecord;