diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index 4145b86..3ff23f4 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -11,7 +11,7 @@ PROGRAM_VERSION=1.1-dev PROGRAM_BUILD=2016031002 IS_STABLE=no -## FUNC_BUILD=2016031001 +## FUNC_BUILD=2016031101 ## BEGIN Generic functions for osync & obackup written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -203,6 +203,7 @@ function SendAlert { fi if type mutt > /dev/null 2>&1 ; then cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mutt) -x -s \"$subject\" $DESTINATION_MAILS $attachment_command" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mutt) !!!" "WARN" @@ -221,10 +222,12 @@ function SendAlert { attachment_command="" fi cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mail) $attachment_command -s \"$subject\" $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mail) with attachments !!!" "WARN" cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mail) -s \"$subject\" $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mail) without attachments !!!" "WARN" @@ -240,6 +243,7 @@ function SendAlert { if type sendmail > /dev/null 2>&1 ; then cmd="echo -e \"Subject:$subject\r\n$MAIL_ALERT_MSG\" | $(type -p sendmail) $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p sendmail) !!!" "WARN" diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index a29a678..67477f5 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -1,4 +1,4 @@ -## FUNC_BUILD=2016031001 +## FUNC_BUILD=2016031101 ## BEGIN Generic functions for osync & obackup written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -190,6 +190,7 @@ function SendAlert { fi if type mutt > /dev/null 2>&1 ; then cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mutt) -x -s \"$subject\" $DESTINATION_MAILS $attachment_command" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mutt) !!!" "WARN" @@ -208,10 +209,12 @@ function SendAlert { attachment_command="" fi cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mail) $attachment_command -s \"$subject\" $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mail) with attachments !!!" "WARN" cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mail) -s \"$subject\" $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mail) without attachments !!!" "WARN" @@ -227,6 +230,7 @@ function SendAlert { if type sendmail > /dev/null 2>&1 ; then cmd="echo -e \"Subject:$subject\r\n$MAIL_ALERT_MSG\" | $(type -p sendmail) $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p sendmail) !!!" "WARN" diff --git a/install.sh b/install.sh index bb9b9a7..86b9c55 100755 --- a/install.sh +++ b/install.sh @@ -3,10 +3,10 @@ PROGRAM=osync PROGRAM_BINARY=$PROGRAM".sh" PROGRAM_BATCH=$PROGRAM"-batch.sh" -SCRIPT_BUILD=2015102701 +SCRIPT_BUILD=2016031401 ## osync / obackup daemon install script -## Tested on RHEL / CentOS 6 & 7 and Mint 17 +## Tested on RHEL / CentOS 6 & 7, Fedora 23, Debian 7 & 8, Mint 17 and FreeBSD 8 & 10 ## Please adapt this to fit your distro needs CONF_DIR=/etc/$PROGRAM @@ -30,48 +30,48 @@ else echo "Config directory [$CONF_DIR] exists." fi -if [ -f ./sync.conf ]; then - cp ./sync.conf /etc/$PROGRAM/sync.conf.example +if [ -f "./sync.conf" ]; then + cp "./sync.conf" "/etc/$PROGRAM/sync.conf.example" fi -if [ -f ./host_backup.conf ]; then - cp ./host_backup.conf /etc/$PROGRAM/host_backup.conf.example +if [ -f "./host_backup.conf" ]; then + cp "./host_backup.conf" "/etc/$PROGRAM/host_backup.conf.example" fi -if [ -f ./exlude.list.example ]; then - cp ./exclude.list.example /etc/$PROGRAM +if [ -f "./exlude.list.example" ]; then + cp "./exclude.list.example" "/etc/$PROGRAM" fi -cp ./$PROGRAM_BINARY "$BIN_DIR" +cp "./$PROGRAM_BINARY" "$BIN_DIR" if [ $? != 0 ]; then echo "Cannot copy $PROGRAM_BINARY to [$BIN_DIR]." else echo "Copied $PROGRAM_BINARY to [$BIN_DIR]." fi -cp ./$PROGRAM_BATCH /usr/local/bin +cp "./$PROGRAM_BATCH" "/usr/local/bin" if [ $? != 0 ]; then echo "Cannot copy $PROGRAM_BATCH to [$BIN_DIR]." else echo "Copied $PROGRAM_BATCH to [$BIN_DIR]." fi -cp ./ssh_filter.sh /usr/local/bin +cp "./ssh_filter.sh" "/usr/local/bin" if [ $? != 0 ]; then echo "Cannot copy ssh_filter.sh to [$BIN_DIR]." else echo "Copied ssh_filter.sh to [$BIN_DIR]." fi -if [ -f ./osync-srv ]; then - cp ./osync-srv "$SERVICE_DIR" +if [ -f "./osync-srv" ]; then + cp "./osync-srv" "$SERVICE_DIR" if [ $? != 0 ]; then echo "Cannot copy osync-srv to [$SERVICE_DIR]." else echo "Created osync-srv service in [$SERVICE_DIR]." - chmod 755 /etc/init.d/osync-srv + chmod 755 "/etc/init.d/osync-srv" fi fi -chmod 755 /usr/local/bin/$PROGRAM_BINARY -chmod 755 /usr/local/bin/$PROGRAM_BATCH -chmod 755 /usr/local/bin/ssh_filter.sh -chown root:root /usr/local/bin/ssh_filter.sh +chmod 755 "/usr/local/bin/$PROGRAM_BINARY" +chmod 755 "/usr/local/bin/$PROGRAM_BATCH" +chmod 755 "/usr/local/bin/ssh_filter.sh" +chown root:root "/usr/local/bin/ssh_filter.sh" diff --git a/osync-batch.sh b/osync-batch.sh index de46a79..63f292e 100755 --- a/osync-batch.sh +++ b/osync-batch.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash SUBPROGRAM=osync PROGRAM="$SUBPROGRAM-batch" # Batch program to run osync / obackup instances sequentially and rerun failed ones -AUTHOR="(L) 2013-2015 by Orsiris \"Ozy\" de Jong" +AUTHOR="(L) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr - ozy@netpower.fr" -PROGRAM_BUILD=2015103001 +PROGRAM_BUILD=2016031301 ## Runs an osync /obackup instance for every conf file found ## If an instance fails, run it again if time permits @@ -43,10 +43,8 @@ function Logger { if [ "$level" == "CRITICAL" ]; then _logger "$prefix\e[41m$value\e[0m" - ERROR_ALERT=1 elif [ "$level" == "ERROR" ]; then _logger "$prefix\e[91m$value\e[0m" - ERROR_ALERT=1 elif [ "$level" == "WARN" ]; then _logger "$prefix\e[93m$value\e[0m" elif [ "$level" == "NOTICE" ]; then @@ -63,7 +61,7 @@ function Logger { function CheckEnvironment { ## osync / obackup executable full path can be set here if it cannot be found on the system - if ! type -p $SUBPROGRAM.sh > /dev/null 2>&1 + if ! type $SUBPROGRAM.sh > /dev/null 2>&1 then if [ -f /usr/local/bin/$SUBPROGRAM.sh ] then @@ -85,7 +83,7 @@ function CheckEnvironment { function Batch { ## Get list of .conf files - for i in $(ls $CONF_FILE_PATH/*.conf) + for i in $CONF_FILE_PATH/*.conf do if [ "$RUN" == "" ]; then RUN="$i" @@ -104,7 +102,7 @@ function Batch { wait $! if [ $? != 0 ]; then Logger "Run instance $(basename $i) failed" "ERROR" - if [ "RUN_AGAIN" == "" ]; then + if [ "$RUN_AGAIN" == "" ]; then RUN_AGAIN="$i" else RUN_AGAIN=$RUN_AGAIN" $i" @@ -138,23 +136,17 @@ function Usage { exit 128 } -_SILENT=0 -_DRY=0 -_VERBOSE=0 opts="" for i in "$@" do case $i in --silent) - _SILENT=1 opts=$opts" --silent" ;; --dry) - _DRY=1 opts=$opts" --dry" ;; --verbose) - _VERBOSE=1 opts=$opts" --verbose" ;; --no-maxtime) diff --git a/osync.sh b/osync.sh index 649f17f..ee3c49e 100755 --- a/osync.sh +++ b/osync.sh @@ -11,7 +11,7 @@ PROGRAM_VERSION=1.1-dev PROGRAM_BUILD=2016031002 IS_STABLE=no -## FUNC_BUILD=2016031001 +## FUNC_BUILD=2016031101 ## BEGIN Generic functions for osync & obackup written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -192,6 +192,7 @@ function SendAlert { fi if type mutt > /dev/null 2>&1 ; then cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mutt) -x -s \"$subject\" $DESTINATION_MAILS $attachment_command" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mutt) !!!" "WARN" @@ -210,10 +211,12 @@ function SendAlert { attachment_command="" fi cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mail) $attachment_command -s \"$subject\" $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mail) with attachments !!!" "WARN" cmd="echo \"$MAIL_ALERT_MSG\" | $(type -p mail) -s \"$subject\" $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p mail) without attachments !!!" "WARN" @@ -229,6 +232,7 @@ function SendAlert { if type sendmail > /dev/null 2>&1 ; then cmd="echo -e \"Subject:$subject\r\n$MAIL_ALERT_MSG\" | $(type -p sendmail) $DESTINATION_MAILS" + Logger "Mail cmd: $cmd" "DEBUG" eval $cmd if [ $? != 0 ]; then Logger "Cannot send alert email via $(type -p sendmail) !!!" "WARN" diff --git a/ssh_filter.sh b/ssh_filter.sh index dbae96b..089790e 100755 --- a/ssh_filter.sh +++ b/ssh_filter.sh @@ -1,21 +1,22 @@ -#!/bin/bash +#!/usr/bin/env bash -##### Osync ssh command filter build 2015090801 +##### osync / obackup ssh command filter ##### This script should be located in /usr/local/bin in the remote system to sync / backup ##### It will filter the commands that can be run remotely via ssh. ##### Please chmod 755 and chown root:root this file ##### Obackup needed commands: rsync find du mysql mysqldump (sudo) ##### Osync needed commands: rsync find du echo mkdir rm if df (sudo) +SCRIPT_BUILD=2016031401 ## If enabled, execution of "sudo" command will be allowed. SUDO_EXEC=yes ## Paranoia option. Don't change this unless you read the documentation and still feel concerned about security issues. RSYNC_EXECUTABLE=rsync ## Enable other commands, useful for remote execution hooks like remotely creating snapshots. -CMD1= -CMD2= -CMD3= +CMD1="" +CMD2="" +CMD3="" LOG_FILE=~/.ssh/ssh_filter.log @@ -25,7 +26,7 @@ function Log { } function Go { - eval $SSH_ORIGINAL_COMMAND + eval "$SSH_ORIGINAL_COMMAND" } case ${SSH_ORIGINAL_COMMAND%% *} in @@ -47,16 +48,19 @@ case ${SSH_ORIGINAL_COMMAND%% *} in Go ;; "$CMD1") if [ "$CMD1" != "" ]; then - Go ;; + Go fi + ;; "$CMD2") if [ "$CMD2" != "" ]; then - Go ;; + Go fi + ;; "$CMD3") if [ "$CMD3" != "" ]; then - Go ;; + Go fi + ;; "sudo") if [ "$SUDO_EXEC" == "yes" ]; then if [[ "$SSH_ORIGINAL_COMMAND" == "sudo $RSYNC_EXECUTABLE"* ]]; then @@ -65,20 +69,15 @@ case ${SSH_ORIGINAL_COMMAND%% *} in Go elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo find"* ]]; then Go - elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo mkdir"* ]] - then + elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo mkdir"* ]]; then Go - elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo rm"* ]] - then + elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo rm"* ]]; then Go - elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo echo"* ]] - then + elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo echo"* ]]; then Go - elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo df"* ]] - then + elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo df"* ]]; then Go - elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo mv"* ]] - then + elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo mv"* ]]; then Go elif [[ "$SSH_ORIGINAL_COMMAND" == "sudo $CMD1"* ]]; then if [ "$CMD1" != "" ]; then