#!/bin/bash
# *************************************************************************
# * WOLPING voor Ubuntu Ben Makkink 11-1-2025                             *
# *************************************************************************
# * Dit script is voor Wake On Lan middels het BackupPC ping commando     *
# * wat het eerste is wat BackupPC doet voordat het de backup start       *
# * Dit script is een vervanging dat de remote pc pingt en in het geval   *
# * er geen responce komt, deze wekt middels een zgn. Magic Packet.       *
# * Na enige wachttijd wordt dan opnieuw gepingd.                         *
# * Voorwaarde is dat de PC naam en IP bekend zijn. In geval van NETBIOS  *
# * problemen: de PC vermelden in /etc/hosts                              *
# * Etherwake werkt met het MAC address, zorg dus dat PC naam en de       *
# * bijbehorende MAC-address vermeld zijn in /etc/ethers                  *
# * Specificeer netwerk interface als deze anders is dan 'eth0'           *
# * Voor de homeserver is dit 'eno1' dus: # etherwake -i eno1 $host       *            
# * Voor de thuisserver is dit 'enp34s0' dus: # etherwake -i enp34s0 $host*
# ************************************************************************* 

PING=/bin/ping

ARG1=$1
ARG2=$2
WAKEHOST=$3

ETHWAKE='/usr/bin/sudo /sbin/etherwake -i enp34s0'
SLEEPTIME=30s

logger "Backuppc pinging  $1 $2 $3"

function fwol {
        TO_WAKEUP=$1
        $ETHWAKE $1
        if [ $? -eq 0 ]
        then
           WOL_RES="OK"
        else
           WOL_RES="FAIL"
        fi
}



$PING $ARG1 $ARG2 $WAKEHOST >>/dev/null 2>&1
if [ $? -ne 0 ]; then
        fwol $WAKEHOST
        if [ "$WOL_RES" = "FAIL" ]; then
                exit 1
        fi

        sleep $SLEEPTIME

        $PING $ARG1 $ARG2 $WAKEHOST
        if [ $? -eq 0 ]
        then
           logger "success waking $WAKEHOST."
        else
           logger "unable to wake $WAKEHOST."
           exit 1
        fi
else
   $PING $ARG1 $ARG2 $WAKEHOST
fi

exit 0

