133 lines
2.7 KiB
Bash
133 lines
2.7 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Library for operating system actions
|
|
|
|
# Functions
|
|
|
|
########################
|
|
# Check if an user exists in the system
|
|
# Arguments:
|
|
# $1 - user
|
|
# Returns:
|
|
# Boolean
|
|
#########################
|
|
user_exists() {
|
|
local user="${1:?user is missing}"
|
|
id "$user" >/dev/null 2>&1
|
|
}
|
|
|
|
########################
|
|
# Check if a group exists in the system
|
|
# Arguments:
|
|
# $1 - group
|
|
# Returns:
|
|
# Boolean
|
|
#########################
|
|
group_exists() {
|
|
local group="${1:?group is missing}"
|
|
getent group "$group" >/dev/null 2>&1
|
|
}
|
|
|
|
########################
|
|
# Create a group in the system if it does not exist already
|
|
# Arguments:
|
|
# $1 - group
|
|
# Returns:
|
|
# None
|
|
#########################
|
|
ensure_group_exists() {
|
|
local group="${1:?group is missing}"
|
|
|
|
if ! group_exists "$group"; then
|
|
groupadd "$group" >/dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
########################
|
|
# Create an user in the system if it does not exist already
|
|
# Arguments:
|
|
# $1 - user
|
|
# $2 - group
|
|
# Returns:
|
|
# None
|
|
#########################
|
|
ensure_user_exists() {
|
|
local user="${1:?user is missing}"
|
|
local group="${2:-}"
|
|
|
|
if ! user_exists "$user"; then
|
|
useradd "$user" >/dev/null 2>&1
|
|
if [[ -n "$group" ]]; then
|
|
ensure_group_exists "$group"
|
|
usermod -a -G "$group" "$user" >/dev/null 2>&1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
########################
|
|
# Check if the script is currently running as root
|
|
# Arguments:
|
|
# $1 - user
|
|
# $2 - group
|
|
# Returns:
|
|
# Boolean
|
|
#########################
|
|
am_i_root() {
|
|
if [[ "$(id -u)" = "0" ]]; then
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
########################
|
|
# Get total memory available
|
|
# Arguments:
|
|
# None
|
|
# Returns:
|
|
# Memory in bytes
|
|
#########################
|
|
get_total_memory() {
|
|
echo $(($(grep MemTotal /proc/meminfo | awk '{print $2}') / 1024))
|
|
}
|
|
|
|
#########################
|
|
# Redirects output to /dev/null if debug mode is disabled
|
|
# Globals:
|
|
# BITNAMI_DEBUG
|
|
# Arguments:
|
|
# $@ - Command to execute
|
|
# Returns:
|
|
# None
|
|
#########################
|
|
debug_execute() {
|
|
if ${BITNAMI_DEBUG:-false}; then
|
|
"$@"
|
|
else
|
|
"$@" >/dev/null 2>&1
|
|
fi
|
|
}
|
|
|
|
########################
|
|
# Retries a command a given number of times
|
|
# Arguments:
|
|
# $1 - cmd (as a string)
|
|
# $2 - max retries. Default: 12
|
|
# $3 - sleep between retries (in seconds). Default: 5
|
|
# Returns:
|
|
# Boolean
|
|
#########################
|
|
retry_while() {
|
|
local -r cmd="${1:?cmd is missing}"
|
|
local -r retries="${2:-12}"
|
|
local -r sleep_time="${3:-5}"
|
|
local return_value=1
|
|
|
|
read -r -a command <<< "$cmd"
|
|
for ((i = 1 ; i <= retries ; i+=1 )); do
|
|
"${command[@]}" && return_value=0 && break
|
|
sleep "$sleep_time"
|
|
done
|
|
return $return_value
|
|
}
|