|
|
|
@ -95,10 +95,6 @@ exec_01_useradd_sync(){
|
|
|
|
local GET_USERADD=$(get_conf_useradd_from_system "${PARAM}")
|
|
|
|
local GET_USERADD=$(get_conf_useradd_from_system "${PARAM}")
|
|
|
|
if [[ ${GET_USERADD} != "" ]]; then
|
|
|
|
if [[ ${GET_USERADD} != "" ]]; then
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERADD}
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERADD}
|
|
|
|
# Если в системной конфигурации заданы USERADD_SYNC= USERADD_SYNC[${PARAM}]= то установить в глобальной конфигурации
|
|
|
|
|
|
|
|
[[ -n ${USERADD_SYNC} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERADD_SYNC="${USERADD_SYNC}"
|
|
|
|
|
|
|
|
[[ -n ${PARAM} && "$(declare -p USERADD_SYNC 2>/dev/null)" == "declare -A"* && -n ${USERADD_SYNC[${PARAM}]} ]] \
|
|
|
|
|
|
|
|
&& ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERADD_SYNC["${PARAM}"]="${USERADD_SYNC[${PARAM}]}"
|
|
|
|
|
|
|
|
local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM})
|
|
|
|
local GET_USERSHADOW=$(get_conf_usershadow_from_system ${PARAM})
|
|
|
|
# TODO: Если задан диапазон пользователей, пример 0-999, то GET_USERSHADOW будет содержать всех пользователей в этом диапазоте
|
|
|
|
# TODO: Если задан диапазон пользователей, пример 0-999, то GET_USERSHADOW будет содержать всех пользователей в этом диапазоте
|
|
|
|
# А нужно выбрать только пользователей которые содержатся в GET_USERADD
|
|
|
|
# А нужно выбрать только пользователей которые содержатся в GET_USERADD
|
|
|
|
@ -106,44 +102,71 @@ exec_01_useradd_sync(){
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERSHADOW}
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_USERSHADOW}
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
set_ubconfig_global_allsync(){
|
|
|
|
|
|
|
|
# Если в системной конфигурации заданы USERADD_SYNC= то установить в глобальной конфигурации
|
|
|
|
|
|
|
|
[[ -n ${USERADD_SYNC} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERADD_SYNC="${USERADD_SYNC}"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
set_ubconfig_global_selectsync(){
|
|
|
|
|
|
|
|
local PARAM="$1"
|
|
|
|
|
|
|
|
# Если в системной конфигурации заданы USERADD_SYNC[${PARAM}]= то установить в глобальной конфигурации
|
|
|
|
|
|
|
|
[[ -n ${PARAM} && "$(declare -p USERADD_SYNC 2>/dev/null)" == "declare -A"* && -n ${USERADD_SYNC[${PARAM}]} ]] \
|
|
|
|
|
|
|
|
&& ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] USERADD_SYNC["${PARAM}"]="${USERADD_SYNC[${PARAM}]}"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
|
|
|
|
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
|
|
|
|
[[ -n ${COMMAND} ]] || COMMAND="set="
|
|
|
|
[[ -n ${COMMAND} ]] || COMMAND="set="
|
|
|
|
local PARAM="$@"
|
|
|
|
local PARAM="$@"
|
|
|
|
if [[ -n ${PARAM} ]]; then
|
|
|
|
if [[ -n ${PARAM} ]]; then
|
|
|
|
local USERADD_SYNC=
|
|
|
|
# Параметр вида USERADD_SYNC=
|
|
|
|
declare -A USERADD_SYNC=()
|
|
|
|
if [[ ${PARAM} =~ ^[^'[']+'=' ]]; then
|
|
|
|
|
|
|
|
USERADD_SYNC=
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
# Параметр вида USERADD_SYNC[*]=
|
|
|
|
|
|
|
|
local USERADD_SYNC=
|
|
|
|
|
|
|
|
declare -A USERADD_SYNC=()
|
|
|
|
|
|
|
|
fi
|
|
|
|
[[ ${PARAM} =~ ^[[:alnum:]_]+("="|"[".*"]=") ]] && eval "${PARAM%%=*}=\${PARAM#*=}"
|
|
|
|
[[ ${PARAM} =~ ^[[:alnum:]_]+("="|"[".*"]=") ]] && eval "${PARAM%%=*}=\${PARAM#*=}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
while IFS= read -u3 SELECT_USERADD_SYNC; do
|
|
|
|
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]]; then
|
|
|
|
if [[ ${SELECT_USERADD_SYNC} == 'shutdown@all' ]]; then
|
|
|
|
# Обработка всех пользователей параметр USERADD_SYNC=...
|
|
|
|
remove_ubconfig "@all"
|
|
|
|
while IFS= read -u3 SELECT_USERADD_SYNC; do
|
|
|
|
set_ubconfig "@all"
|
|
|
|
if [[ ${SELECT_USERADD_SYNC} == 'shutdown@all' ]]; then
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} == 'shutdown@users' ]]; then
|
|
|
|
remove_ubconfig "@all"
|
|
|
|
remove_ubconfig "@users"
|
|
|
|
set_ubconfig "@all"
|
|
|
|
set_ubconfig "@users"
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} == 'shutdown@users' ]]; then
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} == 'shutdown@systems' ]]; then
|
|
|
|
remove_ubconfig "@users"
|
|
|
|
remove_ubconfig "@systems"
|
|
|
|
set_ubconfig "@users"
|
|
|
|
set_ubconfig "@systems"
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} == 'shutdown@systems' ]]; then
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} == 'shutdown' ]]; then
|
|
|
|
remove_ubconfig "@systems"
|
|
|
|
remove_ubconfig "@users"
|
|
|
|
set_ubconfig "@systems"
|
|
|
|
remove_ubconfig "@systems"
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} == 'shutdown' ]]; then
|
|
|
|
set_ubconfig
|
|
|
|
remove_ubconfig "@users"
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} =~ ^'shutdown@'(([[:digit:]]+)'-'*([[:digit:]]*))$ ]]; then
|
|
|
|
remove_ubconfig "@systems"
|
|
|
|
local LIST_USERS="${BASH_REMATCH[1]}"
|
|
|
|
set_ubconfig
|
|
|
|
remove_ubconfig "${LIST_USERS}"
|
|
|
|
elif [[ ${SELECT_USERADD_SYNC} =~ ^'shutdown@'(([[:digit:]]+)'-'*([[:digit:]]*))$ ]]; then
|
|
|
|
set_ubconfig "${LIST_USERS}"
|
|
|
|
local LIST_USERS="${BASH_REMATCH[1]}"
|
|
|
|
fi
|
|
|
|
remove_ubconfig "${LIST_USERS}"
|
|
|
|
done 3<<< "${USERADD_SYNC//@(,|;)/$'\n'}"
|
|
|
|
set_ubconfig "${LIST_USERS}"
|
|
|
|
if [[ "$(declare -p USERADD_SYNC 2>/dev/null)" == "declare -A"* ]]; then
|
|
|
|
|
|
|
|
[[ -n ${!USERADD_SYNC[@]} ]] && while IFS= read -u3 SELECT_USER; do
|
|
|
|
|
|
|
|
# В массиве 0 запись игнорируем, т.к. это параметр не ассоциативного массива
|
|
|
|
|
|
|
|
if [[ ${SELECT_USER} != 0 && ${USERADD_SYNC[${SELECT_USER}]} =~ 'shutdown' ]]; then
|
|
|
|
|
|
|
|
remove_ubconfig "${SELECT_USER}"
|
|
|
|
|
|
|
|
set_ubconfig "${SELECT_USER}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done 3< <(printf "%s\n" "${!USERADD_SYNC[@]}")
|
|
|
|
set_ubconfig_global_allsync
|
|
|
|
|
|
|
|
done 3<<< "${USERADD_SYNC//@(,|;)/$'\n'}"
|
|
|
|
|
|
|
|
# Обработка выбранних пользователей параметр USERADD_SYNC[...]=...
|
|
|
|
|
|
|
|
if [[ "$(declare -p USERADD_SYNC 2>/dev/null)" == "declare -A"* ]]; then
|
|
|
|
|
|
|
|
[[ -n ${!USERADD_SYNC[@]} ]] && while IFS= read -u3 SELECT_USER; do
|
|
|
|
|
|
|
|
# В массиве 0 запись игнорируем, т.к. это параметр не ассоциативного массива
|
|
|
|
|
|
|
|
if [[ ${SELECT_USER} != 0 && ${USERADD_SYNC[${SELECT_USER}]} =~ 'shutdown' ]]; then
|
|
|
|
|
|
|
|
# Если все пользователи уже были синхронизироаны, то пропустить
|
|
|
|
|
|
|
|
if [[ ! ${USERADD_SYNC} =~ (^|,)('shutdown@all'|'shutdown')(,|$) ]]; then
|
|
|
|
|
|
|
|
remove_ubconfig "${SELECT_USER}"
|
|
|
|
|
|
|
|
set_ubconfig "${SELECT_USER}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
set_ubconfig_global_selectsync "${SELECT_USER}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
done 3< <(printf "%s\n" "${!USERADD_SYNC[@]}")
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
|
|
|
|
|
|
|
|
true
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -168,44 +191,67 @@ exec_02_groupadd_sync(){
|
|
|
|
if [[ ${GET_GROUPADD} != "" ]]; then
|
|
|
|
if [[ ${GET_GROUPADD} != "" ]]; then
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_GROUPADD}
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] ${GET_GROUPADD}
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_GROUPADD}
|
|
|
|
eval ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] ${GET_GROUPADD}
|
|
|
|
# Если в системной конфигурации заданы GROUPADD_SYNC= GROUPADD_SYNC[${PARAM}]= то установить в глобальной конфигурации
|
|
|
|
|
|
|
|
[[ -n ${GROUPADD_SYNC} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] GROUPADD_SYNC="${GROUPADD_SYNC}"
|
|
|
|
|
|
|
|
[[ -n ${PARAM} && "$(declare -p GROUPADD_SYNC 2>/dev/null)" == "declare -A"* && -n ${GROUPADD_SYNC[${PARAM}]} ]] \
|
|
|
|
|
|
|
|
&& ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] GROUPADD_SYNC["${PARAM}"]="${GROUPADD_SYNC[${PARAM}]}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
set_ubconfig_global_allsync(){
|
|
|
|
|
|
|
|
# Если в системной конфигурации заданы GROUPADD_SYNC= то установить в глобальной конфигурации
|
|
|
|
|
|
|
|
[[ -n ${GROUPADD_SYNC} ]] && ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] GROUPADD_SYNC="${GROUPADD_SYNC}"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
set_ubconfig_global_selectsync(){
|
|
|
|
|
|
|
|
local PARAM="$1"
|
|
|
|
|
|
|
|
# Если в системной конфигурации заданы GROUPADD_SYNC[${PARAM}]= то установить в глобальной конфигурации
|
|
|
|
|
|
|
|
[[ -n ${PARAM} && "$(declare -p GROUPADD_SYNC 2>/dev/null)" == "declare -A"* && -n ${GROUPADD_SYNC[${PARAM}]} ]] \
|
|
|
|
|
|
|
|
&& ${ROOTFS}/usr/bin/ubconfig --quiet --target global set [users] GROUPADD_SYNC["${PARAM}"]="${GROUPADD_SYNC[${PARAM}]}"
|
|
|
|
|
|
|
|
}
|
|
|
|
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
|
|
|
|
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
|
|
|
|
[[ -n ${COMMAND} ]] || COMMAND="set="
|
|
|
|
[[ -n ${COMMAND} ]] || COMMAND="set="
|
|
|
|
local PARAM="$@"
|
|
|
|
local PARAM="$@"
|
|
|
|
if [[ -n ${PARAM} ]]; then
|
|
|
|
if [[ -n ${PARAM} ]]; then
|
|
|
|
local GROUPADD_SYNC=
|
|
|
|
# Параметр вида GROUPADD_SYNC=
|
|
|
|
declare -A GROUPADD_SYNC=()
|
|
|
|
if [[ ${PARAM} =~ ^[^'[']+'=' ]]; then
|
|
|
|
|
|
|
|
GROUPADD_SYNC=
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
# Параметр вида GROUPADD_SYNC[*]=
|
|
|
|
|
|
|
|
local GROUPADD_SYNC=
|
|
|
|
|
|
|
|
declare -A GROUPADD_SYNC=()
|
|
|
|
|
|
|
|
fi
|
|
|
|
[[ ${PARAM} =~ ^[[:alnum:]_]+("="|"[".*"]=") ]] && eval "${PARAM%%=*}=\${PARAM#*=}"
|
|
|
|
[[ ${PARAM} =~ ^[[:alnum:]_]+("="|"[".*"]=") ]] && eval "${PARAM%%=*}=\${PARAM#*=}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
# Если синхронизируем группы по шаблону, то удалим все группы из глобальной конфигурации
|
|
|
|
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]]; then
|
|
|
|
if [[ ${USERADD_SYNC} =~ 'shutdown' ]]; then
|
|
|
|
# Обработка всех групп, параметр GROUPADD_SYNC=...
|
|
|
|
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] GROUPADD[*]
|
|
|
|
# Если синхронизируем группы по шаблону, то удалим все группы из глобальной конфигурации
|
|
|
|
fi
|
|
|
|
if [[ ${USERADD_SYNC} =~ 'shutdown' ]]; then
|
|
|
|
while IFS= read -u3 SELECT_GROUPADD_SYNC; do
|
|
|
|
${ROOTFS}/usr/bin/ubconfig --quiet --target global remove [users] GROUPADD[*]
|
|
|
|
if [[ ${SELECT_GROUPADD_SYNC} == 'shutdown@all' ]]; then
|
|
|
|
|
|
|
|
set_ubconfig "@all"
|
|
|
|
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} == 'shutdown@groups' ]]; then
|
|
|
|
|
|
|
|
set_ubconfig "@groups"
|
|
|
|
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} == 'shutdown@systems' ]]; then
|
|
|
|
|
|
|
|
set_ubconfig "@systems"
|
|
|
|
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} =~ ^'shutdown@'(([[:digit:]]+)'-'*([[:digit:]]*))$ ]]; then
|
|
|
|
|
|
|
|
set_ubconfig "${BASH_REMATCH[1]}"
|
|
|
|
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} == 'shutdown' ]]; then
|
|
|
|
|
|
|
|
set_ubconfig
|
|
|
|
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done 3<<< "${GROUPADD_SYNC//@(,|;)/$'\n'}"
|
|
|
|
while IFS= read -u3 SELECT_GROUPADD_SYNC; do
|
|
|
|
if [[ "$(declare -p GROUPADD_SYNC 2>/dev/null)" == "declare -A"* ]]; then
|
|
|
|
if [[ ${SELECT_GROUPADD_SYNC} == 'shutdown@all' ]]; then
|
|
|
|
while IFS= read -u3 SELECT_GROUP; do
|
|
|
|
set_ubconfig "@all"
|
|
|
|
# В массиве 0 запись игнорируем, т.к. это параметр не ассоциативного массива
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} == 'shutdown@groups' ]]; then
|
|
|
|
if [[ ${SELECT_GROUP} != 0 && ${GROUPADD_SYNC[${SELECT_GROUP}]} =~ 'shutdown' ]]; then
|
|
|
|
set_ubconfig "@groups"
|
|
|
|
set_ubconfig "${SELECT_GROUP}"
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} == 'shutdown@systems' ]]; then
|
|
|
|
|
|
|
|
set_ubconfig "@systems"
|
|
|
|
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} =~ ^'shutdown@'(([[:digit:]]+)'-'*([[:digit:]]*))$ ]]; then
|
|
|
|
|
|
|
|
set_ubconfig "${BASH_REMATCH[1]}"
|
|
|
|
|
|
|
|
elif [[ ${SELECT_GROUPADD_SYNC} == 'shutdown' ]]; then
|
|
|
|
|
|
|
|
set_ubconfig
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done 3< <(printf "%s\n" "${!GROUPADD_SYNC[@]}")
|
|
|
|
set_ubconfig_global_allsync
|
|
|
|
|
|
|
|
done 3<<< "${GROUPADD_SYNC//@(,|;)/$'\n'}"
|
|
|
|
|
|
|
|
# Обработка выбранних групп параметр GROUPADD_SYNC[...]=...
|
|
|
|
|
|
|
|
if [[ "$(declare -p GROUPADD_SYNC 2>/dev/null)" == "declare -A"* ]]; then
|
|
|
|
|
|
|
|
while IFS= read -u3 SELECT_GROUP; do
|
|
|
|
|
|
|
|
# В массиве 0 запись игнорируем, т.к. это параметр не ассоциативного массива
|
|
|
|
|
|
|
|
if [[ ${SELECT_GROUP} != 0 && ${GROUPADD_SYNC[${SELECT_GROUP}]} =~ 'shutdown' ]]; then
|
|
|
|
|
|
|
|
# Если все пользователи уже были синхронизироаны, то пропустить
|
|
|
|
|
|
|
|
if [[ ! ${GROUPADD_SYNC} =~ (^|,)('shutdown@all'|'shutdown')(,|$) ]]; then
|
|
|
|
|
|
|
|
set_ubconfig "${SELECT_GROUP}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
set_ubconfig_global_selectsync "${SELECT_GROUP}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
done 3< <(printf "%s\n" "${!GROUPADD_SYNC[@]}")
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
|
|
|
|
|
|
|
|
true
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|