X-Git-Url: https://arthur.barton.de/gitweb/?p=trigger-rcmd.git;a=blobdiff_plain;f=scripts%2Ftrigger-rcmd;h=102fe162754d5e25922b9feafeee233a3f9bb5b4;hp=57408c40d870620e017edf4253605a39390b61b6;hb=HEAD;hpb=b886d800df7a22839c1a9f2138a910f0d273695b diff --git a/scripts/trigger-rcmd b/scripts/trigger-rcmd index 57408c4..102fe16 100755 --- a/scripts/trigger-rcmd +++ b/scripts/trigger-rcmd @@ -1,7 +1,7 @@ #!/bin/sh # # trigger-rcmp: Trigger remote commands -# Copyright (c)2014-2017 Alexander Barton (alex@barton.de) +# Copyright (c)2014-2020 Alexander Barton (alex@barton.de) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -33,35 +33,29 @@ do_rcmd() { # Read in job/configuration file, but ignore shellcheck(1) warnings: # shellcheck disable=1090 - . "$cnf" - - if [ $? -ne 0 ]; then + if ! . "$cnf"; then echo "$NAME: Failed to read \"$cnf\"!" return 2 fi echo "$NAME: Checking system \"$SYSTEM\" ..." - fping -c1 -q "$SYSTEM" 2>/dev/null - if [ $? -ne 0 ]; then + if ! fping -c1 -q "$SYSTEM" 2>/dev/null; then if [ -n "$NO_WAKE" ]; then echo "$NAME: \"$SYSTEM\" seems to be down, skipping job." return 9 fi echo "$NAME: \"$SYSTEM\" seems to be down, wake it up ..." - etherwake -b -i "$IFACE" "$(echo "$SYSTEM" | cut -d'.' -f1)" - if [ $? -ne 0 ]; then + if ! etherwake -b -i "$IFACE" "$(echo "$SYSTEM" | cut -d'.' -f1)"; then echo "$NAME: Failed to wake \"$SYSTEM\"!" >&2 return 3 fi echo "$NAME: Waiting for \"$SYSTEM\" to respond ..." for i in $(seq 1 $TIMEOUT); do - fping -c1 -q "$SYSTEM" 2>/dev/null - [ $? -ne 0 ] || break + fping -c1 -q "$SYSTEM" 2>/dev/null && break sleep 1s done - fping -c1 -q "$SYSTEM" 2>/dev/null - if [ $? -ne 0 ]; then + if ! fping -c1 -q "$SYSTEM" 2>/dev/null; then echo "$NAME: Failed to wake \"$SYSTEM\"!" >&2 return 4 fi @@ -102,8 +96,7 @@ do_rcmd() { if [ "$rsys_users" = "0" ]; then echo "$NAME: Power off \"$SYSTEM\" again ..." # shellcheck disable=2029 - ssh -o PreferredAuthentications=publickey -q "$SYSTEM" "sync; shutdown -hP $SHUTDOWN_TIME" >/dev/null - if [ $? -ne 0 ]; then + if ! ssh -o PreferredAuthentications=publickey -q "$SYSTEM" "sync; shutdown -hP $SHUTDOWN_TIME" >/dev/null 2>&1; then echo "$NAME: Failed to power off \"$SYSTEM\"!" >&2 return 5 fi @@ -164,8 +157,14 @@ while [ $# -gt 0 ]; do fi NAME=$BASENAME fi - [ $r -ne 0 ] && result=1 + if [ $r -ne 0 ]; then + # Exit code indicates an error. But only flag this as error + # when target should have been woken up and the indicated error + # is not "system down" (9). + [ -z "$NO_WAKE" ] || [ $r -ne 9 ] && result=1 + fi shift - [ $# -gt 0 ] && echo done + +echo "$NAME: All done, exit code $result - $(date "+%Y-%m-%d %H:%M:%S")" exit $result