New option to give quota file
This commit is contained in:
parent
b29bd8c2a8
commit
8cfcb862b3
|
@ -9,9 +9,9 @@
|
||||||
# 2021-11-22
|
# 2021-11-22
|
||||||
# }}}
|
# }}}
|
||||||
# Vars {{{
|
# Vars {{{
|
||||||
readonly PROGNAME=$(basename "${0}")
|
PROGNAME=$(basename "${0}"); readonly PROGNAME
|
||||||
readonly PROGDIR=$(readlink -m $(dirname "${0}"))
|
PROGDIR=$(readlink -m $(dirname "${0}")); readonly PROGDIR
|
||||||
readonly ARGS="${*}"
|
ARGS="${*}"; readonly ARGS
|
||||||
readonly NBARGS="${#}"
|
readonly NBARGS="${#}"
|
||||||
[ -z "${DEBUG}" ] && DEBUG=1
|
[ -z "${DEBUG}" ] && DEBUG=1
|
||||||
## Export DEBUG for sub-script
|
## Export DEBUG for sub-script
|
||||||
|
@ -21,6 +21,9 @@ export DEBUG
|
||||||
readonly ZFS_DATASET_DEFAULT="datastore"
|
readonly ZFS_DATASET_DEFAULT="datastore"
|
||||||
readonly ZFS_QUOTA_DEFAULT="50G"
|
readonly ZFS_QUOTA_DEFAULT="50G"
|
||||||
|
|
||||||
|
# Disable QUOTA_FILE_MODE by default
|
||||||
|
QUOTA_FILE_MODE=1
|
||||||
|
|
||||||
## Colors
|
## Colors
|
||||||
readonly PURPLE='\033[1;35m'
|
readonly PURPLE='\033[1;35m'
|
||||||
readonly RED='\033[0;31m'
|
readonly RED='\033[0;31m'
|
||||||
|
@ -93,6 +96,19 @@ define_vars() { # {{{
|
||||||
readonly zfs_quota="${ZFS_QUOTA_DEFAULT}"
|
readonly zfs_quota="${ZFS_QUOTA_DEFAULT}"
|
||||||
fi
|
fi
|
||||||
## }}}
|
## }}}
|
||||||
|
## If quota_file was defined (argument) {{{
|
||||||
|
if [ -n "${quota_file}" ]; then
|
||||||
|
## If the file is exists
|
||||||
|
## OR exit
|
||||||
|
is_file_present "${quota_file}" \
|
||||||
|
|| error_message "Given quota file (${quota_file}) isn't readable." 10
|
||||||
|
|
||||||
|
## Enable QUOTA_FILE_MODE
|
||||||
|
debug_message "define_vars − \
|
||||||
|
${quota_file} will be used to get specific quota for defined users."
|
||||||
|
QUOTA_FILE_MODE=0
|
||||||
|
fi
|
||||||
|
## }}}
|
||||||
|
|
||||||
## Temp file vars {{{
|
## Temp file vars {{{
|
||||||
readonly zfs_user_list_path="/tmp/${PROGNAME}.user.list"
|
readonly zfs_user_list_path="/tmp/${PROGNAME}.user.list"
|
||||||
|
@ -283,14 +299,26 @@ main() { # {{{
|
||||||
## }}}
|
## }}}
|
||||||
|
|
||||||
## Information message
|
## Information message
|
||||||
debug_message "Apply quota (${RED}${zfs_quota}${COLOR_DEBUG}) to all users of ZFS pool/dataset : ${RED}${zfs_dataset}${COLOR_DEBUG}"
|
debug_message "Apply quota (default : ${RED}${zfs_quota}${COLOR_DEBUG}) to all users of ZFS pool/dataset : ${RED}${zfs_dataset}${COLOR_DEBUG}"
|
||||||
|
|
||||||
## Read user one by one
|
## Read user one by one
|
||||||
while IFS= read -r zfs_username; do
|
while IFS= read -r zfs_username; do
|
||||||
|
### Get quota to use {{{
|
||||||
|
if [ "${QUOTA_FILE_MODE}" -eq "0" ] \
|
||||||
|
&& grep --word-regexp -- "^${zfs_username}" "${quota_file}" | grep --only-matching --perl-regexp --quiet -- '[[:digit:].]*.$'; then
|
||||||
|
user_zfs_quota="$(grep --word-regexp -- "^${zfs_username}" "${quota_file}" |
|
||||||
|
grep --only-matching --perl-regexp -- '[[:digit:].]*.$' \
|
||||||
|
|| error_message "Can't get quota for ${zfs_username} user from ${quota_file} quota file." 4)"
|
||||||
|
debug_message "Apply specific quota (${RED}${user_zfs_quota}${COLOR_DEBUG}) to ${zfs_username} user."
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
user_zfs_quota="${zfs_quota}"
|
||||||
|
fi
|
||||||
|
### }}}
|
||||||
### Try to apply the quota to the user {{{
|
### Try to apply the quota to the user {{{
|
||||||
### OR Exit with error
|
### OR Exit with error
|
||||||
apply_zfs_userquota "${zfs_username}" "${zfs_quota}" \
|
apply_zfs_userquota "${zfs_username}" "${user_zfs_quota}" \
|
||||||
|| error_message "Can't define the new quota (${zfs_quota}) for ${zfs_username} user in ${zfs_dataset} ZFS pool/dataset. Please use --debug option." 4
|
|| error_message "Can't define the new quota (${user_zfs_quota}) for ${zfs_username} user in ${zfs_dataset} ZFS pool/dataset. Please use --debug option." 4
|
||||||
### }}}
|
### }}}
|
||||||
done < "${zfs_user_list_path}"
|
done < "${zfs_user_list_path}"
|
||||||
|
|
||||||
|
@ -327,6 +355,12 @@ if [ ! "${NBARGS}" -eq "0" ]; then
|
||||||
-d|--debug ) ## debug
|
-d|--debug ) ## debug
|
||||||
DEBUG=0
|
DEBUG=0
|
||||||
;;
|
;;
|
||||||
|
-f|--file ) ## Quota file
|
||||||
|
## Move to the next argument
|
||||||
|
shift
|
||||||
|
## Define var
|
||||||
|
readonly quota_file="${1}"
|
||||||
|
;;
|
||||||
-h|--help ) ## help
|
-h|--help ) ## help
|
||||||
usage
|
usage
|
||||||
## Exit after help informations
|
## Exit after help informations
|
||||||
|
|
Loading…
Reference in New Issue