bundles/wireguard: add wg_health_check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
This commit is contained in:
parent
f79365304c
commit
9188b28b7a
3 changed files with 57 additions and 1 deletions
38
bundles/wireguard/files/wg_health_check
Normal file
38
bundles/wireguard/files/wg_health_check
Normal file
|
@ -0,0 +1,38 @@
|
|||
#!/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
|
Loading…
Add table
Add a link
Reference in a new issue