39 lines
750 B
Text
39 lines
750 B
Text
|
#!/bin/bash
|
||
|
|
||
|
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
|