mirror of
https://github.com/deajan/obackup.git
synced 2025-05-10 12:13:41 +02:00
Updated ofunctions from osync
This commit is contained in:
parent
06efa18901
commit
252df96e59
@ -2,8 +2,8 @@
|
|||||||
#### OFUNCTIONS FULL SUBSET ####
|
#### OFUNCTIONS FULL SUBSET ####
|
||||||
#### OFUNCTIONS MINI SUBSET ####
|
#### OFUNCTIONS MINI SUBSET ####
|
||||||
|
|
||||||
_OFUNCTIONS_VERSION=2.1-RC1+dev
|
_OFUNCTIONS_VERSION=2.1-RC2
|
||||||
_OFUNCTIONS_BUILD=2017010401
|
_OFUNCTIONS_BUILD=2017020801
|
||||||
#### _OFUNCTIONS_BOOTSTRAP SUBSET ####
|
#### _OFUNCTIONS_BOOTSTRAP SUBSET ####
|
||||||
_OFUNCTIONS_BOOTSTRAP=true
|
_OFUNCTIONS_BOOTSTRAP=true
|
||||||
#### _OFUNCTIONS_BOOTSTRAP SUBSET END ####
|
#### _OFUNCTIONS_BOOTSTRAP SUBSET END ####
|
||||||
@ -125,7 +125,7 @@ function joinString {
|
|||||||
function _Logger {
|
function _Logger {
|
||||||
local logValue="${1}" # Log to file
|
local logValue="${1}" # Log to file
|
||||||
local stdValue="${2}" # Log to screeen
|
local stdValue="${2}" # Log to screeen
|
||||||
local toStderr="${3:-false}" # Log to stderr instead of stdout
|
local toStdErr="${3:-false}" # Log to stderr instead of stdout
|
||||||
|
|
||||||
if [ "$logValue" != "" ]; then
|
if [ "$logValue" != "" ]; then
|
||||||
echo -e "$logValue" >> "$LOG_FILE"
|
echo -e "$logValue" >> "$LOG_FILE"
|
||||||
@ -134,7 +134,7 @@ function _Logger {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$stdValue" != "" ] && [ "$_LOGGER_SILENT" != true ]; then
|
if [ "$stdValue" != "" ] && [ "$_LOGGER_SILENT" != true ]; then
|
||||||
if [ $toStderr == true ]; then
|
if [ $toStdErr == true ]; then
|
||||||
# Force stderr color in subshell
|
# Force stderr color in subshell
|
||||||
(>&2 echo -e "$stdValue")
|
(>&2 echo -e "$stdValue")
|
||||||
|
|
||||||
@ -387,7 +387,12 @@ function SendAlert {
|
|||||||
attachment=true
|
attachment=true
|
||||||
fi
|
fi
|
||||||
if [ -e "$RUN_DIR/$PROGRAM._Logger.$SCRIPT_PID.$TSTAMP" ]; then
|
if [ -e "$RUN_DIR/$PROGRAM._Logger.$SCRIPT_PID.$TSTAMP" ]; then
|
||||||
body="$MAIL_ALERT_MSG"$'\n\n'"$(cat $RUN_DIR/$PROGRAM._Logger.$SCRIPT_PID.$TSTAMP)"
|
if [ "$MAIL_BODY_CHARSET" != "" ] && type iconv > /dev/null 2>&1; then
|
||||||
|
iconv -f UTF-8 -t $MAIL_BODY_CHARSET "$RUN_DIR/$PROGRAM._Logger.$SCRIPT_PID.$TSTAMP" > "$RUN_DIR/$PROGRAM._Logger.iconv.$SCRIPT_PID.$TSTAMP"
|
||||||
|
body="$MAIL_ALERT_MSG"$'\n\n'"$(cat $RUN_DIR/$PROGRAM._Logger.iconv.$SCRIPT_PID.$TSTAMP)"
|
||||||
|
else
|
||||||
|
body="$MAIL_ALERT_MSG"$'\n\n'"$(cat $RUN_DIR/$PROGRAM._Logger.$SCRIPT_PID.$TSTAMP)"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $ERROR_ALERT == true ]; then
|
if [ $ERROR_ALERT == true ]; then
|
||||||
@ -1084,6 +1089,8 @@ function ArrayContains () {
|
|||||||
#### GetLocalOS SUBSET ####
|
#### GetLocalOS SUBSET ####
|
||||||
function GetLocalOS {
|
function GetLocalOS {
|
||||||
local localOsVar
|
local localOsVar
|
||||||
|
local localOsName
|
||||||
|
local localOsVer
|
||||||
|
|
||||||
# There's no good way to tell if currently running in BusyBox shell. Using sluggish way.
|
# There's no good way to tell if currently running in BusyBox shell. Using sluggish way.
|
||||||
if ls --help 2>&1 | grep -i "BusyBox" > /dev/null; then
|
if ls --help 2>&1 | grep -i "BusyBox" > /dev/null; then
|
||||||
@ -1144,8 +1151,14 @@ function GetLocalOS {
|
|||||||
Logger "Local OS: [$localOsVar]." "DEBUG"
|
Logger "Local OS: [$localOsVar]." "DEBUG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Get linux versions
|
||||||
|
if [ -f "/etc/os-release" ]; then
|
||||||
|
localOsName=$(GetConfFileValue "/etc/os-release" "NAME")
|
||||||
|
localOsVer=$(GetConfFileValue "/etc/os-release" "VERSION")
|
||||||
|
fi
|
||||||
|
|
||||||
# Add a global variable for statistics in installer
|
# Add a global variable for statistics in installer
|
||||||
LOCAL_OS_FULL="$localOsVar"
|
LOCAL_OS_FULL="$localOsVar ($localOsName $localOsVer)"
|
||||||
}
|
}
|
||||||
#### GetLocalOS SUBSET END ####
|
#### GetLocalOS SUBSET END ####
|
||||||
|
|
||||||
@ -1160,10 +1173,12 @@ function GetRemoteOS {
|
|||||||
|
|
||||||
local remoteOsVar
|
local remoteOsVar
|
||||||
|
|
||||||
$SSH_CMD bash -s << 'ENDSSH' >> "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$SCRIPT_PID.$TSTAMP" 2>&1
|
$SSH_CMD env _REMOTE_TOKEN="$_REMOTE_TOKEN" bash -s << 'ENDSSH' >> "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$SCRIPT_PID.$TSTAMP" 2>&1
|
||||||
|
|
||||||
function GetOs {
|
function GetOs {
|
||||||
local localOsVar
|
local localOsVar
|
||||||
|
local localOsName
|
||||||
|
local localOsVer
|
||||||
|
|
||||||
# There's no good way to tell if currently running in BusyBox shell. Using sluggish way.
|
# There's no good way to tell if currently running in BusyBox shell. Using sluggish way.
|
||||||
if ls --help 2>&1 | grep -i "BusyBox" > /dev/null; then
|
if ls --help 2>&1 | grep -i "BusyBox" > /dev/null; then
|
||||||
@ -1182,7 +1197,13 @@ function GetOs {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
echo "$localOsVar"
|
# Get linux versions
|
||||||
|
if [ -f "/etc/os-release" ]; then
|
||||||
|
localOsName=$(GetConfFileValue "/etc/os-release" "NAME")
|
||||||
|
localOsVer=$(GetConfFileValue "/etc/os-release" "VERSION")
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$localOsVar ($localOsName $localOsVer)"
|
||||||
}
|
}
|
||||||
|
|
||||||
GetOs
|
GetOs
|
||||||
@ -1280,7 +1301,7 @@ function RunRemoteCommand {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
Logger "Running command [$command] on remote host." "NOTICE"
|
Logger "Running command [$command] on remote host." "NOTICE"
|
||||||
cmd=$SSH_CMD' "$command" > "'$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$SCRIPT_PID.$TSTAMP'" 2>&1'
|
cmd=$SSH_CMD' "env _REMOTE_TOKEN="'$_REMOTE_TOKEN'" $command" > "'$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$SCRIPT_PID.$TSTAMP'" 2>&1'
|
||||||
Logger "cmd: $cmd" "DEBUG"
|
Logger "cmd: $cmd" "DEBUG"
|
||||||
eval "$cmd" &
|
eval "$cmd" &
|
||||||
WaitForTaskCompletion $! 0 $hardMaxTime $SLEEP_TIME $KEEP_LOGGING true true false
|
WaitForTaskCompletion $! 0 $hardMaxTime $SLEEP_TIME $KEEP_LOGGING true true false
|
||||||
@ -1646,6 +1667,11 @@ function InitLocalOSDependingSettings {
|
|||||||
if [ "$LOCAL_OS" == "msys" ] || [ "$LOCAL_OS" == "Cygwin" ]; then
|
if [ "$LOCAL_OS" == "msys" ] || [ "$LOCAL_OS" == "Cygwin" ]; then
|
||||||
FIND_CMD=$(dirname $BASH)/find
|
FIND_CMD=$(dirname $BASH)/find
|
||||||
PING_CMD='$SYSTEMROOT\system32\ping -n 2'
|
PING_CMD='$SYSTEMROOT\system32\ping -n 2'
|
||||||
|
|
||||||
|
# On BSD, when not root, min ping interval is 1s
|
||||||
|
elif [ "$LOCAL_OS" == "BSD" ] && [ "$LOCAL_USER" != "root" ]; then
|
||||||
|
FIND_CMD=find
|
||||||
|
PING_CMD="ping -c 2 -i 1"
|
||||||
else
|
else
|
||||||
FIND_CMD=find
|
FIND_CMD=find
|
||||||
PING_CMD="ping -c 2 -i .2"
|
PING_CMD="ping -c 2 -i .2"
|
||||||
@ -1695,7 +1721,7 @@ function InitRemoteOSDependingSettings {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
## Set rsync default arguments
|
## Set rsync default arguments
|
||||||
RSYNC_ARGS="-rltD"
|
RSYNC_ARGS="-rltD -8"
|
||||||
if [ "$_DRYRUN" == true ]; then
|
if [ "$_DRYRUN" == true ]; then
|
||||||
RSYNC_DRY_ARG="-n"
|
RSYNC_DRY_ARG="-n"
|
||||||
DRY_WARNING="/!\ DRY RUN "
|
DRY_WARNING="/!\ DRY RUN "
|
||||||
@ -1790,4 +1816,70 @@ function ParentPid {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Neat version compare function found at http://stackoverflow.com/a/4025065/2635443
|
||||||
|
# Returns 0 if equal, 1 if $1 > $2 and 2 if $1 < $2
|
||||||
|
vercomp () {
|
||||||
|
if [[ $1 == $2 ]]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
local IFS=.
|
||||||
|
local i ver1=($1) ver2=($2)
|
||||||
|
# fill empty fields in ver1 with zeros
|
||||||
|
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
|
||||||
|
do
|
||||||
|
ver1[i]=0
|
||||||
|
done
|
||||||
|
for ((i=0; i<${#ver1[@]}; i++))
|
||||||
|
do
|
||||||
|
if [[ -z ${ver2[i]} ]]
|
||||||
|
then
|
||||||
|
# fill empty fields in ver2 with zeros
|
||||||
|
ver2[i]=0
|
||||||
|
fi
|
||||||
|
if ((10#${ver1[i]} > 10#${ver2[i]}))
|
||||||
|
then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if ((10#${ver1[i]} < 10#${ver2[i]}))
|
||||||
|
then
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#### GetConfFileValue SUBSET ####
|
||||||
|
function GetConfFileValue () {
|
||||||
|
local file="${1}"
|
||||||
|
local name="${2}"
|
||||||
|
local value
|
||||||
|
|
||||||
|
value=$(grep "^$name=" "$file")
|
||||||
|
if [ $? == 0 ]; then
|
||||||
|
value="${value##*=}"
|
||||||
|
echo "$value"
|
||||||
|
else
|
||||||
|
Logger "Cannot get value for [$name] in config file [$file]." "ERROR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#### GetConfFileValue SUBSET END ####
|
||||||
|
|
||||||
|
#### SetConfFileValue SUBSET ####
|
||||||
|
function SetConfFileValue () {
|
||||||
|
local file="${1}"
|
||||||
|
local name="${2}"
|
||||||
|
local value="${3}"
|
||||||
|
|
||||||
|
if grep "^$name=" "$file" > /dev/null; then
|
||||||
|
# Using -i.tmp for BSD compat
|
||||||
|
sed -i.tmp "s/^$name=.*/$name=$value/" "$file"
|
||||||
|
rm -f "$file.tmp"
|
||||||
|
Logger "Set [$name] to [$value] in config file [$file]." "DEBUG"
|
||||||
|
else
|
||||||
|
Logger "Cannot set value [$name] to [$value] in config file [$file]." "ERROR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#### SetConfFileValue SUBSET END ####
|
||||||
|
|
||||||
#### OFUNCTIONS FULL SUBSET END ####
|
#### OFUNCTIONS FULL SUBSET END ####
|
||||||
|
Loading…
Reference in New Issue
Block a user