#!/bin/bash if [[ -e "/var/lib/bundlewrap/hard-${node.name}/info" ]] then # make sure we're not restarting during bw apply echo "bw apply running" exit 0 fi now="$(date +%s)" everything_up=1 % for peer, ip in sorted(peers.items()): # ${peer} if ! /usr/bin/ping -c 4 ${ip} then everything_up=0 fi % endfor if [[ "$everything_up" -eq 1 ]] then echo "Everything is up as expected" echo "$now" > /var/tmp/wg_all_reached exit 0 fi five_min_ago="$(expr $now - 300)" last_reached="$(cat /var/tmp/wg_all_reached)" if [[ "$last_reached" -lt "$five_min_ago" ]] then echo "RESTART" systemctl restart systemd-networkd # only restart once an hour echo "$(expr $now + 3300)" > /var/tmp/wg_all_reached elif [[ "$last_reached" -gt "$now" ]] then echo "Something's broken, but we have recently restarted" else echo "Something's broken, but still in grace time" fi