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;