mirror of
https://0xacab.org/liberate/backupninja.git
synced 2024-11-26 04:32:42 +01:00
Merge branch 'exit-code'
This commit is contained in:
commit
cb7e5aa4e0
@ -111,6 +111,18 @@ root@srchost# ssh-copy-id \-i /root/.ssh/id_dsa.pub backup@desthost
|
||||
.TP
|
||||
Now, you should be able to ssh from user 'root' on srchost to user 'backup' on desthost without specifying a password. When prompted for a password by ssh-keygen, just leave it blank by hitting return. The "wizard" \fBninjahelper(1)\fP will walk you through these steps.
|
||||
|
||||
.SH EXIT VALUES
|
||||
.PD 0
|
||||
\fB0\fP success
|
||||
.br
|
||||
\fB1\fP errors or warnings emitted during backup
|
||||
.br
|
||||
\fB2\fP one or more backup actions failed
|
||||
.br
|
||||
\fB3\fP syntax or usage error
|
||||
.br
|
||||
.PD
|
||||
|
||||
.SH FILES
|
||||
.PD 0
|
||||
\fB/usr/sbin/backupninja\fP main script
|
||||
|
@ -375,8 +375,8 @@ function process_action() {
|
||||
[ $debug ] && colorize "$a"
|
||||
done
|
||||
)
|
||||
retcode=$?
|
||||
# ^^^^^^^^ we have a problem! we can't grab the return code "$?". grrr.
|
||||
retcode=${PIPESTATUS[0]}
|
||||
debug "handler returned exit code $retcode"
|
||||
echo_debug_msg=0
|
||||
|
||||
else
|
||||
@ -468,10 +468,9 @@ while [ $# -ge 1 ]; do
|
||||
;;
|
||||
*)
|
||||
debug=1
|
||||
echo "Unknown option $1"
|
||||
fatal "Unknown option $1"
|
||||
error "Unknown option $1"
|
||||
usage
|
||||
exit
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
@ -554,7 +553,7 @@ fi
|
||||
|
||||
if [ "$UID" != "0" ]; then
|
||||
echo "`basename $0` can only be run as root"
|
||||
exit 1
|
||||
exit 3
|
||||
fi
|
||||
|
||||
## Process each configuration file
|
||||
@ -648,3 +647,11 @@ if [ -n "$reporthost" ]; then
|
||||
debug "send $logfile to $reportuser@$reporthost:$reportdirectory"
|
||||
rsync -qt $logfile $reportuser@$reporthost:$reportdirectory
|
||||
fi
|
||||
|
||||
# return exit code
|
||||
[ $halts == 0 ] || exit 2
|
||||
[ $fatals == 0 ] || exit 2
|
||||
[ $errors == 0 ] || exit 1
|
||||
[ "$reportwarning" == "yes" -a $warnings != 0 ] && exit 1
|
||||
|
||||
exit 0
|
||||
|
@ -14,8 +14,14 @@ create_test_action() {
|
||||
|
||||
@test "general: error thrown on bad command-line option" {
|
||||
run backupninja --foo
|
||||
[ "$status" -eq 3 ]
|
||||
echo "${lines[0]}" | grep -q "Error: Unknown option --foo"
|
||||
}
|
||||
|
||||
@test "general: error thrown on attempt to run as non-root user" {
|
||||
run sudo -u vagrant backupninja -f "${BATS_TMPDIR}/backupninja.conf"
|
||||
[ "$status" -eq 2 ]
|
||||
[ "${lines[0]}" = "Unknown option --foo" ]
|
||||
[ "${lines[1]}" = "backupninja can only be run as root" ]
|
||||
}
|
||||
|
||||
@test "general: logfile is created" {
|
||||
@ -65,7 +71,6 @@ create_test_action() {
|
||||
@test "reports: error report is mailed" {
|
||||
create_test_action fatal test_error
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 0 ]
|
||||
sleep 0.1
|
||||
grep -q "\*failed\* -- ${BATS_TMPDIR}/backup.d/test.sh" /var/mail/vagrant
|
||||
}
|
||||
@ -75,7 +80,6 @@ create_test_action() {
|
||||
setconfig backupninja.conf reportsuccess no
|
||||
setconfig backupninja.conf reportwarning yes
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 0 ]
|
||||
sleep 0.1
|
||||
grep -q "Warning: test_warning" /var/mail/vagrant
|
||||
}
|
||||
@ -84,7 +88,6 @@ create_test_action() {
|
||||
create_test_action
|
||||
setconfig backupninja.conf reportsuccess yes
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 0 ]
|
||||
sleep 0.1
|
||||
grep -q "success -- ${BATS_TMPDIR}/backup.d/test.sh" /var/mail/vagrant
|
||||
}
|
||||
@ -94,7 +97,6 @@ create_test_action() {
|
||||
setconfig backupninja.conf reportsuccess yes
|
||||
setconfig backupninja.conf reportinfo yes
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 0 ]
|
||||
sleep 0.1
|
||||
grep -q "Info: test_info" /var/mail/vagrant
|
||||
}
|
||||
@ -105,7 +107,6 @@ create_test_action() {
|
||||
setconfig backupninja.conf reportsuccess yes
|
||||
setconfig backupninja.conf reportspace yes
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 0 ]
|
||||
sleep 0.1
|
||||
grep -q "/dev/sda1" /var/mail/vagrant
|
||||
}
|
||||
@ -174,4 +175,40 @@ create_test_action() {
|
||||
grep -q "Debug: skipping ${BATS_TMPDIR}/backup.d/test.sh because current time does not match 21 at 09:00" "${BATS_TMPDIR}/log/backupninja.log"
|
||||
}
|
||||
|
||||
@test "exit code: rc=2 when halt error raised in handler" {
|
||||
create_test_action halt test_halt
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 2 ]
|
||||
}
|
||||
|
||||
@test "exit code: rc=2 when fatal error raised in handler" {
|
||||
create_test_action fatal test_fatal
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 2 ]
|
||||
}
|
||||
|
||||
@test "exit code: rc=1 when error raised in handler" {
|
||||
create_test_action error test_error
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "exit code: rc=1 when warning raised in handler and reportwarning=yes" {
|
||||
create_test_action warning test_warning
|
||||
setconfig backupninja.conf reportwarning yes
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "exit code: rc=0 when warning raised in handler and reportwarning=no" {
|
||||
create_test_action warning test_warning
|
||||
setconfig backupninja.conf reportwarning no
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "exit code: rc=0 when no warnings/errors raised in handler" {
|
||||
create_test_action "true"
|
||||
run backupninja --now -f "${BATS_TMPDIR}/backupninja.conf" --run "${BATS_TMPDIR}/backup.d/test.sh"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
@ -176,7 +176,6 @@ runaction() {
|
||||
if [ -f "${BATS_TMPDIR}/backup.d/${ACTIONFILE}" ]; then
|
||||
[ -f "${BATS_TMPDIR}/log/backupninja.log" ] && rm -f "${BATS_TMPDIR}/log/backupninja.log"
|
||||
run backupninja -f "${BATS_TMPDIR}/backupninja.conf" $TEST --debug --now --run "${BATS_TMPDIR}/backup.d/${ACTIONFILE}"
|
||||
[ "$status" -eq 0 ]
|
||||
else
|
||||
echo "action file not found: ${BATS_TMPDIR}/backup.d/${ACTIONFILE}"
|
||||
false
|
||||
|
Loading…
Reference in New Issue
Block a user